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

【步骤】:

  1. 需要定义一个类 继承于object即可
  2. 在类中需要定义一个属性 限制规则的正则表达式 path(r’/book/kangbazi:book_id’)
  3. 创建to_python方法 将url中的值转化成列表 传给视图函数 python+django =》 [‘python’,django]
  4. 创建to_url方法 [‘python’,django] =》 python+django
  5. 将创建好的转化器注册到django中
  6. 在应用的 __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 %}#}{#

wanfan的种子

#}{# {% else %}#}{#

欠91wangfan一个vip 奥斯卡欠他一个最佳男主角

#}{# {% endif %}#}

for标签

{% for book in books %}
{% endfor %}
序号 书名 作者 价格
{
{ 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:常用的模板标签、过滤器
下一篇:clickhouse python

发表评论

最新留言

不错!
[***.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接口的理解_Java接口的理解 - rabbit_mom的个人空间 - OSCHINA - 中文开源技术交流社区... 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推送功能实现原理图_IOS 基于APNS消息推送原理与实现(JAVA后台) - 图文 2019-04-21
java streamencoder_[求助]关于apcche与tomcat 2019-04-21
golang mongodb mysql_分享一个golang+mongodb+vuejs开发的博客程序 gocms 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
php利用word模板导出excel文件,php生成导出word doc和excel文件实例 2019-04-21
java 边缓存边播放,java动态缓存技术:WEB缓存应用 2019-04-21
php云盘匿名,PHP7之匿名类 2019-04-21
matlab数据大小不兼容,MATLAB无法执行赋值,因为左侧的索引与右侧的大小不兼容。 求解... 2019-04-21
editor.md使用php,editor.md 配置参数和使用方法 2019-04-21