zoukankan      html  css  js  c++  java
  • django基础

    1. 路由系统

    1.1 格式介绍

    '''
    urlpatterns = [
         url(正则表达式, views视图函数,参数,别名),
    ]
    
    参数说明:
     一个正则表达式字符串
     一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
     可选的要传递给视图函数的默认参数(字典形式)
     一个可选的name参数
     '''

    1.2 匹配开头结束

      正则表达式:

    1. 以**开头,利用^,例如:url(r'^index/', views.index),
    2. 以**结尾,利用$,例如:url(r'index/$', views.index),
    3. 通过域名进行访问,显示默认首页,例如:url(r'^$', views.index),

    1.3 无名分组

    url(r'^bbs/article/(d+)/$',views.article_year),
    url(r'^bbs/article/(d+)/(d+)$',views.article_yearMonth),
    
    def article_year(request,year):
        pass
    
    def article_yearMonth(request,year,month):
        pass 

    1.4 有名分组

      在Python 正则表达式中,命名正则表达式组的语法是(?P<name>pattern),其中name 是组的名称,pattern 是要匹配的模式。

    url(r'^bbs/article/(?P<year_id>d+)/(?P<month_id>d+)$',views.article_yearMonth),
    
    def article_yearMonth(request,month_id,year_id):
        pass

    1.5 路由分发

    #Including another URLconf
    #    1. Import the include() function: from django.conf.urls import url, include
    #    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
    
    from django.conf.urls import include, url
    
    urlpatterns = [
       url(r'^admin/', admin.site.urls),
       url(r'^blog/', include('blog.urls')),
    ]

    1.6 反向地址解析

      利用别名,进行地址反向解析

      是在render方法中,进行反向解析的

    1.7 Response

    Httpresponse()        返回字符串
    
    render(request,template_name,context)
    结合一个给定的摸版和一个给定的上下文字典,并返回一个渲染后的HttpResponse对象
    参数说明:
        1.request:用于生产响应的请求对象
        2.template_name:要使用的模板的完整名称,可选参数
        3.context:添加到模板上下文的一个字典,默认是一个空字典。例如字典中的某个值是可调用的,视图将在渲染模板之前调用
        4.content_type:生成的文档要使用的MIME类型。默认为DEFAULT_CONTENT_TYPE设置的值
        5.status:响应的状态码。默认为200
    
    redirect(跳转,重定向)
        redirct("/路径/")
        模拟用户点击submit请求:
        请求url:http://127.0.0.1:8000/login/
            1.请求url:/login/ POST
            2.url(r'^login/',app01_views.login,name="login")
            3.login(request):验证, if 成功,redirect("/index/")
        重定向请求
            请求路径:http://127.0.0.1:8000/index/
            1.请求url:/index/ GET
            2.url(r'^index/',app01_views.index,name="index")
            3.index(request):取出数据库数据,渲染到index.html页面
        用户看到的是:渲染的index.html页面
        
        redirect与render的区别:
            redirct发出两次请求
            render发出一次请求 

    2. template(模板层)

      模板语言:将具体数据嵌入到前端模板的语言

    2.1 模板语言之变量

      语法:

        {{ value }}

    <h4>{{s}}</h4>
    <h4>列表:{{ l.0 }}</h4>
    <h4>列表:{{ l.2 }}</h4>
    <h4>字典:{{ dic.name }}</h4>
    <h4>日期:{{ date.year }}</h4>
    <h4>类对象列表:{{ person_list.0.name }}</h4>

      注意:句点符也可以用来引用对象的方法(无参数方法)。

    2.2 模板之过滤器

      语法:

        {{obj|filter__name:param}}

      1.default

         一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:

        {{ value|default:"nothing" }}

      2.length

        返回值的长度。它对字符串和列表都起作用。例如:

        {{ value|length }}

        如果 value 是 ['a', 'b', 'c', 'd'],那么输出是 4。

      3.filesizeformat

        将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如:

        {{ value|filesizeformat }}

        如果 value 是 123456789,输出将会是 117.7 MB。  

      4.date

        如果 value=datetime.datetime.now()

        {{ value|date:"Y-m-d" }}  

      5.slice

        如果 value="hello world"

        {{ value|slice:"2:-1" }}

      6.truncatechars

        如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。

        参数:要截断的字符数

        例如:

        {{ value|truncatechars:9 }}

      7.safe

        Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。例如:

        value="<a href="">点击</a>"

        {{ value|safe}}

    3. Model

      ORM是数据库表与类的映射关系

      映射关系:

        表名         <------->         类名

        字段         <------->         属性

        表记录     <------->         类实例对象

      通过logging可以查看翻译成的sql语句

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console':{
                'level':'DEBUG',
                'class':'logging.StreamHandler',
            },
        },
        'loggers': {
            'django.db.backends': {
                'handlers': ['console'],
                'propagate': True,
                'level':'DEBUG',
            },
        }
    } 

    3.1 查询

      查询所有

    bookList = models.Book.objects.all()

      进行模糊查询

    bookList = models.Book.objects.filter(title__contains=keyword)

    3.2 增加

      方式一:

    models.Book.objects.create(title=title,pubDate=pubdate)

      方式二:

    book_obj = Book(title="西游记", pubdate=pubdate)
    book_obj.save()

    3.3 删除

    models.Book.objects.filter(id=id).delete()

    3.4 编辑

    models.Book.objects.filter(id=id).update(title=title,pubdate=pubdate)

    3.5 列表序号

        {% for book_obj in bookList %}
            <tr>
                <td>{{ forloop.counter }}</td>
                <td>{{ book_obj.title }}</td>
                <td>{{ book_obj.pubDate|date:"Y-m-d" }}</td>
                <td>{{ book_obj.price }}</td>
                <td>{{ book_obj.publish }}</td>
                <td>
                    <a href="/edit/{{ book_obj.id }}"><button class="btn btn-info">编辑</button></a>
                    <a href="/del/{{ book_obj.id }}"><button class="btn btn-danger">删除</button></a>
                </td>
            </tr>
        {% endfor %}
  • 相关阅读:
    etymology-R
    arp与免费arp的差别,arp老化
    基于S3C2440的linux-3.6.6移植——LED驱动【转】
    《unix环境高级编程》学习笔记【原创】
    安装截图工具 Shutter【转】
    《UNIX环境高级编程第三版》apue.h等源码文件的编译安装【转】
    Ubuntu 下安装Source Insight [转]
    "makefile:5: *** missing separator. Stop."【转】
    深入浅出剖析C语言函数指针与回调函数(一)【转】
    总结与反思、理想与规划---嵌入式学习之旅【原创】
  • 原文地址:https://www.cnblogs.com/goodshipeng/p/7811411.html
Copyright © 2011-2022 走看看