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
      
  • 相关阅读:
    Java修改excel内容
    text标签onchang事件
    shh将数据导出excel
    正则表达式0到200以内的数
    虚拟内存与物理内存
    捕获内核的异常事件
    linux内存(三)内核与用户空间交互
    linux内存(二)高端内存
    linux内存(一) 内核空间与用户空间
    使用tc配置后端设备,来限制虚拟机网卡带宽
  • 原文地址:https://www.cnblogs.com/xiaobai686/p/12000208.html
Copyright © 2011-2022 走看看