day2 django基础 2
发布日期:2021-11-08 19:55:33
浏览次数:1
分类:技术文章
本文共 5401 字,大约阅读时间需要 18 分钟。
day2 django基础 2
复习
django-admin startproject python manage.py startapp settings.py 配置 文件 主 urls.py 路由在这个文件中配置 视图的参数 request对象 HttpResponseurlpatterns = [ path() ]1.url添加参数: 视图中get 获取 http://127.0.0.1:9000/detail/2.url添加参数:试图函数中 也传参 这两个的参数名必须一致 3.http://127.0.0.1:8000//book urls.py项目名 settings urls wsgi manage.py from django.urls import path,includeurlpatterns = [ path(r'',include("book.urls"))]path函数 urlre_path()?P <参数名> [0-9]{4} 参数名>
自定义url 转化器
系统提供的转化器 有 int str uuid path 等
path(r’//int:book_id’,) 有个需求是这样的
1.获取python分类下面的文章 /articles/python 2.获取python和django 分类下的文章 /articles/python+django 这是url中的表现形式 ['python',django] //视图函数处理的时候 需要的是 列表这种形式 3.获取python 和 django 和flask 下的文章/articles/python+django+flask/以此类推 url中 文章分类的参数传递到视图函数之前 应该把它分开存储到列表中 python+django ['python',django]reverse 反转 将列表变成 python+django
【步骤】:
- 需要定义一个类 继承于object即可
- 在类中需要定义一个属性 限制规则的正则表达式 path(r’/book/kangbazi:book_id’)
- 创建to_python方法 将url中的值转化成列表 传给视图函数 python+django =》 [‘python’,django]
- 创建to_url方法 [‘python’,django] =》 python+django
- 将创建好的转化器注册到django中
- 在应用的 __init__文件中 要引入 引入转化器所在的文件
1.http://127.0.0.1:8008/article/list/python+flask+django+tornado+tomcat/ 在浏览器中输入 2.通过转化器 给你转化成了列表 转化后的列表是:['python', 'flask', 'django', 'tornado', 'tomcat']3.将列表 通过 url_name 进行反转 得到 /article/list/python+flask+django+tornado+tomcat/
渲染模板
HttpResponse() 参数为字符串
- render_to_string() 将模板编译成 python的字符串格式 再通过HttpResponse返回给页面
- render()
rom django.http import HttpResponsefrom django.shortcuts import render #这是渲染模板用的from django.template.loader import render_to_string# Create your views here.def index(request): # html = render_to_string('index.html') # return HttpResponse(html) return render(request,'index.html')
模板是如何进行渲染的
settings.py 1.TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], #渲染模板的时候会在这个路径下面进行查找 'APP_DIRS': True, 如果这个为True 会到INSTALLED_APPS 已经注册的app下面的templates 模板中进行查找 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]2.render('index.html') 先查 DIRS有就返回 没有 的话 检查 这个视图所在的app 是否在 会到INSTALLED_APPS 已经注册 那么就到app下面 的template下面查找 如果没有 就到其它已经注册的app下面的 templates 下面查找
模板变量
from django.shortcuts import renderclass Person(object): def __init__(self,username): self.username = usernamedef index(request): p = Person("jiangjiejie") context = { # 'person':{ # 'username':p.username # } # 'person':( # '红楼梦', # '西红柿首富', # '金什么梅', # '水浒传' # ) } return render(request,'index.html',context=context)html { { person.username }} { { person.2 }}
模板中常用的标签
所有的标签 都在 {%%}中 注释 {# #}if 有闭合标签 {% endif %}if 是可以进行判断的 跟python一样 == != < <= > >= in not in is is not {# 在模板中使用变量 四个大括号 { { person.2 }}#}{# {% if age < 18 %}#}{#您是未成年人,不能上车
#}{##}{# {% elif age == 18 %}#}{#您是成年人,可以上车
#}{# {% else %}#}{#樯橹灰飞烟灭
#}{# {% endif %}#}{##}{# {% if '91wangfan' in heros %}#}{# #}{# {% else %}#}{#欠91wangfan一个vip 奥斯卡欠他一个最佳男主角
#}{# {% endif %}#}
for标签
序号 | 书名 | 作者 | 价格 |
---|---|---|---|
{ { forloop.counter }} | { { book.name }} | { { book.author }} | { { book.price}} |
自定义过滤器
- 在指定的应用中创建 templatetags python包 名字必须为 templatetags 否则找不到
- 在templatetags 创建一个py 文件 用来存储过滤器
- 写完以后我们要注册到django.template.Library.filter
- 过滤器所在的app 记得注册到 settings.INSTALLED_APPS
- 在模板中还得加载 这个过滤器
article app templatetags python包 myfilter.py from datetime import datetimefrom django import templateregister = template.Library()@register.filter('my_greet')def greet(value,word): return value+word@register.filterdef time_since(value): """ 1分钟以内 刚刚 1小时以内 几分钟之前 一天以内 几小时之前 30天以内 几天之前 具体的时间 """ if not isinstance(value,datetime): return value now = datetime.now() timestamp = (now-value).total_seconds() if timestamp < 60: return '刚刚' elif timestamp >= 60 and timestamp < 60*60: minutes = int(timestamp/60) return "%s分钟前" % minutes elif timestamp >= 60*60 and timestamp < 60*60*24: hours = int(timestamp/60/60) return "%s小时前" % hours elif timestamp >= 60*60*24 and timestamp < 60*60*24*30: days = int(timestamp/60/60/24) return "%s天前" % days else: return value.strftime("%Y/%m/%d %H:%M:%S") article app views.py from django.shortcuts import renderfrom datetime import datetime# Create your views here.def index(request): context = { "value":"kangbazi", "mytime":datetime(year=2019,month=5,day=21,hour=10,minute=25,second=6) } return render(request,'myfilter.html',context=context)templates myfilter.html {% load my_filter %}自定义过滤器 { { value|my_greet:"helloboy" }} { { mytime|time_since }}
转载地址:https://blog.csdn.net/zhou_xiong1130/article/details/90417967 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年03月17日 07时46分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mysql建立索引 性能测试_MySQL分区和索引性能测试
2019-04-21
数据结构java实验 刘小晶_数据结构实例解析与实验指导:Java语言描述
2019-04-21
java实现 k nn算法_java-C中的k-NN示例问题(OpenCV)
2019-04-21
java重用名快捷键_Eclipse 最常用的 10 组快捷键,个个牛逼!
2019-04-21
java中类加载根路径_java中获取类加载路径和项目根路径的5种方法
2019-04-21
Java套接字传文件_Java通过套接字传输多个文件
2019-04-21
递归字符串逆序 java_在Java中使用递归反转字符串
2019-04-21
java streamencoder_[求助]关于apcche与tomcat
2019-04-21
hive java insert_hive表insert报错
2019-04-21
java 调试dll jna_Java调用dll的实现,JNA框架 | 学步园
2019-04-21
ios php上传视频文件_IOS上传图片 PHP服务器接收并上传
2019-04-21
php redis zrevrange,Redis Zrevrange 命令
2019-04-21
java 边缓存边播放,java动态缓存技术:WEB缓存应用
2019-04-21
php云盘匿名,PHP7之匿名类
2019-04-21
editor.md使用php,editor.md 配置参数和使用方法
2019-04-21