zoukankan      html  css  js  c++  java
  • Django 笔记(二) 新建 ~ 渲染

    新建APP

    python manange.py startapp app_name

    然后右键 pycharm 的项目目录,将新建的目录从服务器上下载进来

    URL(Uniform Resoure Locator)统一资源定位符

    格式:

    http://127.0.0.1:8000/hello/

    URL解释:

      schema://host[:port#]/path/.../[?query-string][#anchor]

      schema:指定使用的协议(例如:http,https,ftp)

      host:Http服务器的IP地址或者域名

      port:端口号,http默认是80端口

      path:访问资源的路径

      query-string:发送给http服务器的数据

      anchor:锚点

    urls.py的作用

    path('test/<xx>/', views.test)

    前面的url匹配成功后就会调用后面的视图函数。

    尖括号从url中捕获值,包含一个转化器类型(converter type)。

    没有转化器,将匹配任意字符串,当然也包括了 / 字符。

    注:<xx> 必须与视图函数的参数一致

    例:def test(request, xx)

    转换器:

    str:匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式

    int:匹配正整数,包含0

    slug:匹配字母、数字以及横杠、下划线组成的字符串

    uuid:匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00

    path:匹配任何非空字符串,包含了路径分隔符

    re_path 正则匹配:

    可使用正则的方法匹配

    include 的作用:

    一个 project 有一个棕的 urls.py ,各个 app 也可以自己建立自己的 urls.py

    用 include() 函数在project的 urls.py 文件进行注册

    例:

    from django.urls import path, include
    
    from . import views
    
    urlpatterns = [
    
      path('book/', include('book.urls'))
    
    ]

     此时 APP books 里面的 urls.py

    from django.urls import path
    
    from . import views
    
    urlpatterns = [
    
      path('index/', views.index)
    
    ]

    此时 APP books 里面的 views.py

    from django.shortcuts import render
    
    def index(request):
    
      return render(request, '这是 book 的首页')

    kwargs 的作用:

    不定长参数

    如果在分 urls.py 添加了字典参数

    path('book/',views.test, {‘switch’: 'true'})

    views 下面的 test 函数形参需要额外增加一个 **kwargs

    如果在使用了 include , 主 views 添加了 字典参数

    其分之下所有函数形参都需要添加 **kwargs

    name 的作用:

    可以给 url 取名字,通过该名字找到对应 url,这样左的原因是防止 url 的规则更改,导致使用了该 url 的地方也要更改,但如去了名字,就不要做任何改动了。

    APP books里的 urls.py

    path('article_name/', views.article_new, name='new_article')

    APP books 里的 views.py

    from django.shortcuts import render, reverse, redirect
    
    return redirect(reverse('new_article'))

    注:redirect 是重定向(跳转), reverse 是将 url 的 name 解析成 url 本身的函数

    templates 模板:

    该模板可新建各个以 app 命名的目录存放各自 app 模板文件

    然后在 setting.py 中的模板路径配置修改以下内容

    TEMPLATES = [

      'DIRS': [os.path.join(BASE_DIR, 'templates')],

    ]

    渲染模板(三种方法选一,皆需 import 导入才能使用):

    1.直接将html字符串硬编码 HttpResponse 中

    def index(request):
    
      return HttpResponse('<h1>Hello Django World!</h1>')

    2. django.template.loader 定义了函数以加载模板

    from django.template.loader import get_template
    
    def index(request):
    
      t = get_template('book/index.html')
    
      html = t.render()
    
      return HttpResponse(html)

    3.使用 render 进行渲染(建议此方法)

    def index(request):
    
      return render(request, 'book/index.html')
  • 相关阅读:
    Redis 连接命令
    Redis 脚本
    Redis 事务
    Redis 发布订阅
    Redis HyperLogLog
    Redis 有序集合(sorted set)
    Redis 集合(Set)
    Redis 列表(List)
    Redis 哈希(Hash)
    特定消费者的限制流量
  • 原文地址:https://www.cnblogs.com/Selling-fish-bears/p/9888357.html
Copyright © 2011-2022 走看看