zoukankan      html  css  js  c++  java
  • Django 学习(一)

    python3 manage.py runserver [127.0.0.1:8000]
    

    默认 IP 地址和端口号为 127.0.0.1:8000

    如果想要让其他电脑连接到服务器,需要手动将 IP 地址指定为 0.0.0.0

    0.0.0.0 以我的理解为一个开关,打开后可以接收来自任何 IP 地址的请求

    127.0.0.1 为本机地址,他在 Windows 系统内有一个别名,即 localhost,用来描述自身,如果想要让别人连接你,就需要打开 cmd 输入 ipconfig 获取 IP 地址了,如 192.168.0.104


    urls.pyurlre_path 的使用等价,其中 url 是 2.0 之前的用法,2.0 之后被 path 代替

    通过 from django.conf.urls import url 导入 url

    通过 from django.urls import path, re_path 导入 pathre_path

    re_path 可以匹配正则表达式


    templates 用于存放 .html 文件,与 manage.py 文件处在同一目录,需要在 settings.py 文件中指明路径

    import os
    TEMPLATES = [
        'DIRS' = [BASE_DIR + '/templates'],
        # 或者
        # 'DIRS' = [os.path.join(BASE_DIR, 'templates')],
        # 'DIRS' = [填绝对路径也行]
    ]
    

    模板用法

    view: {'数据库字段', '数据库字段对应的属性值'}
    HTML: {{ 数据库字段 }}
    

    过滤器

    {{ 变量名 | 过滤器:可选参数 }}
    # 如下
    {{ name|safe }}
    

    if/else 标签

    {% if condition %}
         ... display
    {% endif %}
    

    支持嵌套,如 if...elif...else

    支持 in,and,or,not,>,<,==

    for 标签

    {% for i in listvar %}
        {{ forloop.counter0 }}
    {% empty %}
        空空如也~
    {% endfor %}
    

    循环为空,即不发生循环将执行 empty

    注释标签

    {# 这是注释 #}
    

    csrf_token

    跨站请求伪造保护,{% csrf_token %} 放在 <form> 标签下一行

    首先,向浏览器发送请求,获取登录页面,此时中间件 csrf 会自动生成一个隐藏input标签,该标签里的 value 属性的值是一个随机的字符串,用户获取到登录页面的同时也获取到了这个隐藏的input标签。

    然后,等用户需要用到form表单提交数据的时候,会携带这个 input 标签一起提交给中间件 csrf,原因是 form 表单提交数据时,会包括所有的 input 标签,中间件 csrf 接收到数据时,会判断,这个随机字符串是不是第一次它发给用户的那个,如果是,则数据提交成功,如果不是,则返回403权限错误。


    自定义标签和过滤器

    • 在应用目录下创建 templatetags 目录(与 templates 目录同级,目录名只能是 templatetags)。
    • 在此目录下创建任意文件,导入 template
    from django import template
    
    register = template.Library()   #register的名字是固定的,不可改变
    

    settings.pyTEMPLATES 节点的 OPTIONS 节点添加 libraries 配置

    TEMPLATE = [
        'libraries': 'templatetags.my_tags'
    ]
    

    利用装饰器 @register.filter 自定义过滤器。注意:装饰器的参数最多只能有 2 个。

    利用装饰器 @register.simple_tag 自定义标签。

    在使用自定义标签和过滤器前,要在 html 文件 body 的最上方中导入该 py 文件。

    {% load my_tags %}
    

    语义化标签在该 py 文件中导入 mark_safe。

    from django.utils.safestring import mark_safe
    

    定义标签时,用上 mark_safe 方法,令标签语义化,相当于 jQuery 中的 html() 方法。和前端HTML文件中的过滤器 safe 效果一样。

    @register.simple_tag
    def my_html(v1, v2):
        temp_html = "<input type='text' id='%s' class='%s' />" %(v1, v2)
        return mark_safe(temp_html)
    

    在HTML中使用该自定义标签,在页面中动态创建标签。

    {% my_html "zzz" "xxx" %}
    

    配置静态文件

    1. 在项目根目录下创建 statics 目录。
    2. 在 settings 文件的最下方配置添加以下配置:
    STATIC_URL = '/static/' # 别名 
    STATICFILES_DIRS = [ 
        os.path.join(BASE_DIR, "statics"), 
    ]
    
    1. 在 statics 目录下创建 css 目录,js 目录,images 目录,plugins 目录, 分别放 css文件,js文件,图片,插件。

    注意:此时引用路径中的要用配置文件中的别名 static,而不是目录 statics。

    在模板中使用需要加入 {% load static %} 代码,{% static "images/runoob-logo.png" %}


    模板继承

    标签 block...endblock: 父模板中的预留区域,该区域留给子模板填充差异性的内容,不同预留区域名字不能相同。

    {% block 名称 %} 
    预留给子模板的区域,可以设置设置默认内容
    {% endblock 名称 %}
    

    子模板使用标签 extends 继承父模板:

    {% extends "父模板路径"%} 
    

    子模板如果没有设置父模板预留区域的内容,则使用在父模板设置的默认内容,当然也可以都不设置,就为空。

    子模板设置父模板预留区域的内容:

    { % block 名称 % }
    内容 
    {% endblock 名称 %}
    
  • 相关阅读:
    Linux mint下firefox安装flashplayer
    Linux mint下安装iNode遇到的几个问题
    FireFox浏览器访问ip6域名的问题
    用牛顿迭代法和二分法求方程的根
    VC6工程向导制作
    配置多个版本的python的系统环境变量
    C语言习题解答:求某一天为一年中的第几天
    使用Python求解水仙花问题
    Python语言中round函数的一个疑惑
    Linux下安卓手机管理软件QtADB的使用
  • 原文地址:https://www.cnblogs.com/richmanwu/p/13615426.html
Copyright © 2011-2022 走看看