zoukankan      html  css  js  c++  java
  • Django 【进阶篇】

    Django 流程

    Django url常用匹配语法

    几种匹配(在与项目同名的文件夹里的urls.py里写,对应的函数在APP*里的views.py里写)

    from django.conf.urls import url
     
    from . import views
     
    urlpatterns = [
        url(r'^articles/2003/$', views.special_case_2003),#匹配文章的年是2003的
        url(r'^articles/([0-9]{4})/$', views.year_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
    ]

    Name Groups

    from django.conf.urls import url
     
    from . import views
     
    urlpatterns = [
        url(r'^articles/2003/$', views.special_case_2003),
        url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
        url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
        url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
    ]

    上面url里面的匹配和正则表达式是一样的,根据我们自己的需要去选择相应的正则表达式

    include在url中的用途:项目里面的每个应用即app*里面都有自己的url

    注意url里面不能写动词,虽然不出错,但是不规范

    from django.conf.urls import include, url
     
    urlpatterns = [
        # ... snip ...
        url(r'^community/', include('django_website.aggregator.urls')),
        url(r'^contact/', include('django_website.contact.urls')),
        # ... snip ...
    ]

    url后面加上了字典,它的用途是:

    如果在全局的url中加上字典的话,那么在每一个视图里都会加上该字典里的类型作为参数

    注意:是用户对象,而不是用户名,这里是对一堆的信息封装成为对象

    GETPOST请求方法:

    GETPOST请求方法:

    GET请求的东西是明文显示的   POST请求的东西是非明文的  PostMan插件(只能用于chrone浏览器)

    Django Template渲染:

    字符串 字典 列表,

    >>> from django.template import Context, Template
    >>> t = Template('My name is {{ name }}.')
    >>> c = Context({'name': 'Stephane'})
    >>> t.render(c)
    u'My name is Stephane.'
    >>> from django.template import Template, Context
    >>> person = {'name': 'Sally', 'age': '43'}
    >>> t = Template('{{ person.name }} is {{ person.age }} years old.')
    >>> c = Context({'person': person})
    >>> t.render(c)
    u'Sally is 43 years old.'
    >>> from django.template import Template, Context
    >>> t = Template('Item 2 is {{ items.2 }}.')
    >>> c = Context({'items': ['apples', 'bananas', 'carrots']})
    >>> t.render(c)
    u'Item 2 is carrots.'

    Django Template动态显示数据:

    view.py写好多的数据,要显示在网页上,那么就要在template/app01/index.html中循环的语句

    <ul>
        {%for user_obj in user_objs%}
            {% ifequal user_obj.username 'alex'%} 
                <li  style="background-color:red">username:{{user_obj.username}},name:{{user_obj.name}}</li>
            {%else%}
                <li style="">username:{{user_obj.username}},name:{{%user_obj.name%]}</li>
            {%endifequal%}
        {%endfor%}
    </ul>
    <ul>
        {%for user_obj in user_objs%}
            {% if forloop.counter divisibleby:"2"%} 
                <li  style="background-color:red">username:{{user_obj.username}},name:{{user_obj.name}}</li>
            {%else%}
                <li style="">username:{{user_obj.username}},name:{{%user_obj.name%]}</li>
            {%endifequal%}
            {%endfor%}
    </ul>

    Django Template常用语法:

    1、先做的子页面(views.py)

    def page1(request):
          return render(request,'app01/page1.html')

    2、继承(page1.html)

    {% extends 'app01/index.html' %}
    {% block header-menu %}
         <h1>sub menu 1....3....45...5</h1>
    {% endblock %}
    {% block content-container %}
    page1
    {% endblock %}

    3、index.py

    <body>
    {% block header-menu %}
    <ul>
           <li style="display:inline-block">Home<li>
           <li style="display:inline-block">page1<li>
           <li style="display:inline-block">page2<li>
           <li style="display:inline-block">page3<li>
    </ul>
    {% endblock %}

    Django Template 模板继承和复用:

    首先看一下项目中包含的文件吧!

    register_com.html:

    <div style="background-color:aquamarine">
        <form  action="/register">
             Username:<input name="username" type="text">
             Password:<input name="password" type="password">
        </form>
    </div>

    page1.html:加入的语句为:

     

    {% block father-container %}
       {% include 'app01/register_com.html' %}
    {% endblock %}

     

    page1.html:

    {% extends 'app01/index.html' %}
    {% block header-menu %}
         <h1>sub menu 1...3..45..5</h1>
    {% endblock %}
    {% block content-container %}
         <h1>page</h1>
         {% block father-container %}
               {% include 'app01/register_com.html' %}
          {% endblock %}
    {% endblock %}

    Django配置使用数据库:

    要配置好数据库的连接(在settings.py中)

    需要安装mysql

    在创建数据库的时候为了支持中文,需要这样写:create database ** charset utf8;(**为自己起的数据库的名字)

     

    Django ORM常用语法:

     

    APP中有一个models.py,在这里创建数据库

     

    settings.py里:

     

    1,把自己的应用添加进去,

    2,创建数据库,

     

    3,在admin.py中引入models

     

    4,同步数据库,

     

    >>>python manage.py makemigrations
    >>>python manage.py migrate

     

    5,创建超级用户,

     

    >>>python manage.py createsuperuser

     

    6,最后在models.py中不要忘了添加以下的语句,在python 3.0str不用unicode

     

    Django ORM常用字段:

    字段:

    blank:如果它为true,则其对应的input可以为空

    editable:如果它为false,则其对应的input在页面上就不显示了,但是在数据库中还是存在的

    help_text:提示对应的input填什么内容

    verbose_name:对应的input的名字

     

    Django Admin创建数据库数据:

     

    查找和修改:

    创建:2种方式,

     

    过滤:

    Django 增删改查:

    模糊查找

     

    改:

    关联查询:

     

     

     

     

     

     

     

  • 相关阅读:
    1.2.2 标准命令概述
    1.3 第一个Go程序
    2. 基础类型
    转载:Pixhawk源码笔记一:APM代码基本结构
    IIS6的工作进程回收
    在电脑前独坐,又已经凌晨3点了
    IT人:为什么快乐不起来
    平淡的一天,平淡的心情
    发现一个很好玩的东西
    Jmeter脚本增强检查点
  • 原文地址:https://www.cnblogs.com/Peony-Y/p/5517127.html
Copyright © 2011-2022 走看看