zoukankan      html  css  js  c++  java
  • Django 的路由系统

    Django的路由系统

    创建app

    创建app:
    			a. 使用pycharm创建django的时候, 加上app的名字
    			b. Python manage.py startapp  app的名字
    

    路由的分组

    a. 将业务逻辑写入到app中的views中
    				
    				urls.py:
    					from app01 import views
    					urlpatterns = [
    						# url(r'^admin/', admin.site.urls),
    						  url(r'^test/', views.test),
    					]
    				
    b.  使用include来进行app分组;
    				urls.py:
    					from django.conf.urls import url, include
    					urlpatterns = [
    						url(r'^classes/', include("classes.urls")),
    						url(r'^staudent/', include("staudent.urls")),
    						url(r'^teachers/', include("teachers.urls")),
    					]
    				
    				在其他剩余的app中, 添加urls.py文件, 以classes为例:
    					from django.conf.urls import url
    					from classes import views
    					urlpatterns = [
    						url(r'^get_classes/', views.get_classes)
    					]
    				
    				在这个app的views中, 添加业务逻辑处理函数, 以classes为例:
    					from django.shortcuts import render,HttpResponse
    					# Create your views here.
    					def get_classes(request):
    						return HttpResponse('classes list')
    

    路由的分法

    - 正则表达式匹配
    		
    			urlrouters:
    				url(r'^test/(w+)/(w+)/', views.test),
    				url(r'^test1/(?P<id>w+)/(?P<name>w+)/', views.test1),
    			
    			views.py:
    				def test(request, name, id):
    					print(id, name)
    					return HttpResponse('test')
    
    				def test1(request, name, id):
    					print(id, name)
    					return HttpResponse('test')
    			
    			注意:
    				如果没有?P的约束, 传参的时候, 会根据顺序来获取参数对应的值
    				而如果有约束的话, 传参的时候, 会固定的将获取的值传给所对应的的约束
    			
    			自定制404notfound的页面:
    				url(r'^', views.notfound),
    				
    				views:
    					def notfound(request);
    						return render(request, "404.html")
    		
    		- 反向路由解析:
    			
    			urls.py:
    				url(r'^logindbsjhalbdhaskbhdkjsabhdkbashkdbhsabdhsja/$', views.login, name='xxx'),
    			
    			login.html:
    				<form action="{% url "xxx" %}" method="post">
    					<input type="text">
    				</form>
    		
    		
    		- FBV (function based views)
    			使用函数来处理业务逻辑
    		
    		- CBV (class based views)
    			使用类来处理业务逻辑
    			
    			urls.py:
    				url(r'^login/', views.Login.as_view()),
    				
    			views.py:
    				from django.views import View
    				class Login(View):
    
    					def get(self, request):
    
    						return render(request, "login.html")
    
    					def post(self, request):
    						pass
    						
    				当请求过来的时候, 会优先判断你的请求方法是GET还是POST, 如果是GET请求的话, 走GET函数, 反之, 走POSt函数
    			
                        Http的请求方法:
    
                        'get',:获取信息的
                        'post':提交数据用post方式
                        'put', :更新数据 
                        'patch', :部分更新
    
                        'delete':删除
    
                        form表单的方式, 只支持GET/POST
                        ajax的方式, 全部支持
                        type: "POST" 、get、delete
    
    
  • 相关阅读:
    POJ 1321 棋盘问题
    算法导论 4.1 最大子数组问题
    矩阵快速幂
    固定定位
    HTML排版
    CSS笔记2
    HDU 1796 How many integers can you find(容斥原理)
    HDU 2147 kiki's game(博弈经典题)
    HDU 1846 Brave Game(巴什博弈超简单题)
    HDU 4704 Sum(隔板原理+组合数求和公式+费马小定理+快速幂)
  • 原文地址:https://www.cnblogs.com/bladecheng/p/11349413.html
Copyright © 2011-2022 走看看