美文网首页
Django学习笔记

Django学习笔记

作者: elkelk | 来源:发表于2016-10-25 14:56 被阅读32次

    mvc model view control
    django-admin startproject 在当前目录创建一个项目框架
    python manage.py startapp appname 在当前目录创建一个app框架


    因为缺少setuptools模块跳出ImportError,安装setupuptools解决。


    常用正则表达式
    . 匹配任意字符
    [a-zA-Z] 匹配a-z不区分大小写
    + 匹配一次或者多次
    ? 匹配零次或者一次
    * 匹配零次或者多次
    \d 匹配数字
    [^a] 匹配不为a的字符
    {1,3} 匹配之前表达式1-3次


    关于模型

    每个模型都上一个继承自django.db.models.Model类的实例。
    每一个类的属性表示数据库的字段。
    字段通过Field类的实例表示,如下所示

    from django.db import models #default
    
    # Create your models here.
    
    class Question(models.Model):
        question_text = models.CharField(max_length=200)
        published_date = models.DateTimeField('date published')
    
    class Choice(models.Model):
        question = models.ForeignKey(Question)
        choice_text = models.CharField(max_length=200)
        votes = models.IntegerField(default=0)  
    

    不同的Field实例表示该字段数据的类型,第一个可选参数是一个字符串用以人类可读,若不给就是实例的名字。
    ForeignKey 表示每个Choice关联一个Question

    python manage.py makemigrations polls 运行makemigrations说明已经创建了新的模型,并且将这个行为储存为一个迁移文件。
    python manage.py sqlmigrate polls 0001 执行这条命令会返回迁移文件对应的数据库命令。
    python manage.py check 用于检查项目中的模型是否有问题。
    python manage.py migrate 创建模型所对应的表。

    为每个模型定义一个__str__方法,这样Question.objects.all()返回的就是可以区别各个模型项的信息。

    在管理页面中注册模型

    在admin.py中通过admin.site.register(Question)来注册相应的模型。

    关于模板

    setting.py 配置了context_prosessors
    这上一个可调用函数的默认的元组,以request对象作为参数,返回一个传给context的字典。

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(os.path.dirname(__file__),'templates').replace('\\','/')],
            'APP_DIRS': True,
            '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',
                ],
            },
        },
    ]
    

    以上上1.10.2的默认配置

    关于转义

    django一般会帮你转义和html冲突的字符,以得到正确的显示,如果不希望进行转义,可以在通过管道符添添加一个safe
    若希望对一个块区域转义是否,可以使用autoescape标签,记得要关闭标签。

    {% autoescape off %}
        这里的不会被转义
        {% autoescape on %}
            这里的会被转义
        {% endescape %}
    {% endescape %}
    

    在每个{% for %} 循环中有一个forloop模板变量,这个变量有一些关于循环的信息。
    forloop.counter 当前循环次数,第一次为1
    forloop.counter0 当前循环次数,第一次为0
    forloop.recounter 剩余循环次数,最后一次为1
    forloop.recounter0 剩余循环次数,最后一次为0
    forloop.first 如果循环是第一次执行,那么它被设置为True
    forloop.last 如果循环是最后一次执行,那么它会被设置为True
    forloop.parentloop 指向上一级循环的forloop对象
    forloop 只能在循环中使用。

    {% ifequal %} 比较两个值,相等是显示{% ifequal %} 和 {% endifequal %}之间的内容,只有模板变量,字符串,证书和小数可以作为其参数。

    {# 这是模板注释的用法 #} ,模板注释不能跨越多行,如果要多行注释,可以使用{% comment %} {% endcomment %}模板标签。

    过滤器

    {{ name|lower }} 模板过滤器用来在变量显示前修改它的值的一个简易方法,这里显示的内容是变量{{ name }}被过滤器lower处理后的结果,它的功能是转换为小写,过滤器可以嵌套使用。
    ,有些过滤器需要参数,参数使用方法如下:
    {{ bio|truncatewords:'30' }} 这将显示变量{{ bio }}的前30个词。
    点击查看各种过滤器

    {% include %} 该模板标签允许模板中可以包含其他模板的内容。

    {% extends %} 集成一个基础模板。、

    {% block %} 在子模板中使用这个标签可以覆盖基础模板中相应的标签,如果希望在基础模板的内容上添加内容,可以在子模板的{% block %}中使用{{ block.super }}


    关于setting.py

    首先这里是官方数据库配置文档,遇到问题可以查阅。
    部署的时候
    DEBUG = False
    ADMINS = [('John', 'john@example.com'), ('Mary', 'mary@example.com')]

    INSTALLED_APPS

    Django中激活的应用的名字都保存在这里,以下上1.10.1默认的配置。

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    

    django.contrb.admin 这是管理站点的应用。
    django.contrib.auth 这是认证系统应用。
    django.contrib.contenttypes 用与内容类型的框架
    django.contrib.sessions 关于会话的应用
    django.contrib.messages 关于消息的应用
    django.contrib.staticfiles 管理静态文件的应用

    数据库

    这里是ubuntu官方关于postgresql的用法
    附录B 关于数据库 模型语法和字段类型
    附录C 关于django中数据库API


    django发送email

    首先在setting.py内配置eamil相关信息
    send_email 参数
    关于CSFR权限问题


    关于views.py

    django.http.HttpResponse 返回一个string,参数为string
    django.http.HttpResponseRedirect 重定向到一个路由,参数为一个路由。


    关于forms.py

    django为每一个表单创建了一个form类
    django.forms.Form()实例方法
    假设f是实例

    f.is_bound 查看实例是否绑定数据

    f.is_valid() 返回布尔值,是否合法
    f.errors 字段和出错消息映射表
    f[string].errors 单独字段的出错信息
    f.cleaned_data 通过验证后,这个属性上一个提交数据的字典

    在表单定义里定义一个clean_开头,字段名称结束的方法,是自定义的验证方法。

        subject = forms.CharField()
        email = forms.EmailField(required=False,label="your email address!")
        message = forms.CharField(widget=forms.Textarea)```
    `label`自定义字段在页面中显示的标签
    
    
    #### 关于静态文件
    每个应用文件夹下应有一个`static/appname/static/` 文件夹,静态文件在这里管理。
    模板在`<head>`使用`{% load staticfiles %}`,然后在后面
    `<link rel='stylesheet' type='text/css' href={% static 'appname/static/<staticfile>  %}`

    相关文章

      网友评论

          本文标题:Django学习笔记

          本文链接:https://www.haomeiwen.com/subject/xepayttx.html