zoukankan      html  css  js  c++  java
  • django 学习第二天

    今日内容

    一、Django

    MVC和MTV框架

    MVC

    请求方式

    • controller:路由分发 用urls里面放置不同路径 执行不同函数
    • model 数据库信xi
    • view #views 逻辑相关里面,写函数,里面写数据

    MTV

    请求方式

    • M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
    • T 代表模板 (Template):负责如何把页面展示给用户(html)。
    • V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。

      除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template

    Django下载

    下载安装

    • pip3 install django==1.11.9

    • 创建项目

      django-admin startproject mysite   创建了一个名为"mysite"的Django 项目
      

    创建的项目文件介绍

    manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库,启动关闭项目与	项目交互 等,不管你将框架分了几个文件,必然有一个启动文件,其实他们本身就是一个文件。 
    
    settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。   
    
    urls.py ----- 负责把URL模式映射到应用程序。    
    
    

    二、项目

    1.创建项目

    2.创建app

    • urls.py

      • 注意事项

        • url(r'^books/(d{4})/$', views.index)
        • 第一个参数:路径正则字符串
        • 第二个参数:对应的视图函数
      • 这个文件里面放url的路径,和对应的执行函数

      • from django.conf.urls import url
        from django.contrib import admin
        from app01 import views   ##从app中导入对应的视图函数
        
        urlpatterns = [
            # url(r'^admin/', admin.site.urls),
            url(r'^index/', views.index),
        
            url(r'^books/(d{4})/$', views.year_books),  #多路径的情况,用正则匹配
        
    • views.py 写逻辑视图

      • 这里面写url匹配的路径对应的函数关系

      • from django.shortcuts import render,HttpResponse
        # Create your views here.
        
        def index(request):
            print(request.method) #'POST' 'GET'
            if request.method == 'GET':
                return render(request,'login.html') ##返回的是html页面
            else:
                # print(request.GET)
                print(request.POST)
                username = request.POST.get('username')
                password = request.POST.get('password')
                if username == 'dazhuang' and password == '123':
                    return HttpResponse('登录成功!')
                else:
                    return HttpResponse('登录失败!')	##返回的是字符串
        
    • 在templates里面创建html文件

      • <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
        </head>
        <body>
            <from act="/index/" method="get">
                <input type="text" name="username">
                <input type="text" name="password">
                <input type="submit" value="提交">
            </from>
        </body>
        </html>
        

    3.正则表达式的匹配

    3.1匹配特点

    • 贪婪匹配:它会在它允许的范围内取最长的结果
    • 非贪婪匹配/惰性匹配:在量词后面加上?
      • .*?x  匹配任意非换行符字符任意长度,直到遇到x就停止
      • 转义 // 两个转义/表示变成普通/

    3.2元字符

    • w 匹配数字字母下划线
    • d 匹配所有数字
    • s 匹配所有空白符 换行符、制表符、空格、space
      • 匹配换行符
      • 匹配制表符
    • ^ 匹配一个字符串的开始
    • $ 结束
      • 利用 ^ $ 可以实现 判定某个字符串是否完全符合标准

    3.3匹配规则

      .    表示匹配 除含航服之外的所有字符
      
      [^]  只要不出现在中括号中的内容都可以被匹配
    
        # 有一些有特殊意义的元字符进入字符组中会回复它本来的意义  #  .  |  [  ]  (  )
    
      a|b  或  符合a规则的或者符合b规则的都可被匹配  #如果a规则是b规则的一部分,且a规则比b规则要苛刻,就把a规则写在前面
    
      ()  分组  表示给几个字符加上量词蕨属的需求的时候,就给这些量词分在一个组
    

    3.4量词

      {n}   表示这个量词之前的字符出现n次
    
      {n,}  表示这个量词之前的字符至少出现n次      
    
      {n,m}  表示这个凉席之前的字符出现n-m次
    
      ?      表示匹配量词之前的字符出现 0 次或者 1次
    
      +    表示匹配量词之前的字符出现 1 次或者 多次
    
      *     表示匹配量词之前的字符出现 0 次或者 多次
    

    三、url配置

    1.配置

    基本格式: urlpatterns = [url(正则表达式,views视图函数,参数,别名)]

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

    2.无名分组

    url(r'^books/(d{4})/', views.books)
    

    位置参数

    • url(r'^books/(d{4})/', views.year_books),  #匹配年份的    url(r'^books/(d{4})/(d{1,2})/', views.year_month_books), #匹配年份和月份的 # http://127.0.0.1:8000/books/2001/
      
    •     视图:          
      	def year_month_books(request,year,month):  #位置参数,第一个参数接收的就是无名分组路径中匹配 到的第一个分组的数据,第二个参数接收的就是无名分组路径中匹配到的第二个分组的数据 
            print(year,month)            
      	  # return render(request,'books.html')            
      
      

    3.有名参数

    • 形参名称要和url中的分组名对应好,参数位置就没有要求了

    •     url(r'^books/(?P<year>d{4})/(?P<month>d{1,2})/', views.year_month_books), #匹配年份和月 份的        
          
          def year_month_books(request,month,year):  #形参名称要和url中的分组名对应好,参数位置就没有要求了        
          print(year,month)   
          return HttpResponse(year+month)
      

    4.默认值

    • 默认值,可以减少代码量

    • # urls.py中 
      from django.conf.urls import url
      from.import views
      urlpatterns = [    
      	url(r'^blog/$', views.page),    
      	url(r'^blog/page(?P<num>[0-9]+)/$', views.page), 
      	]
      	
      # views.py中,可以为num指定默认值 
      	def page(request, num="1"):    
      		pass
      
  • 相关阅读:
    Parameter Binding in ASP.NET Web API
    Which HTTP methods match up to which CRUD methods?
    ErrorHandling in asp.net web api
    HttpStatusCode
    Autofac Getting Started(默认的构造函数注入)
    Autofac Controlling Scope and Lifetime
    luvit 被忽视的lua 高性能框架(仿nodejs)
    undefined与null的区别
    VsCode中使用Emmet神器快速编写HTML代码
    字符串匹配---KMP算法
  • 原文地址:https://www.cnblogs.com/xiaobai686/p/12000208.html
Copyright © 2011-2022 走看看