Django URL和View的關(guān)系說(shuō)明
1、每次用戶(hù)發(fā)來(lái)一個(gè)HttpRequest請(qǐng)求,Django會(huì)用URL_pattern與請(qǐng)求進(jìn)行匹配,匹配到第一個(gè)URL_pattern就會(huì)把請(qǐng)求轉(zhuǎn)向?qū)?yīng)的view
2、view用來(lái)響應(yīng)request,并返回response,response里可以包含網(wǎng)頁(yè)文件呀,圖片等等。所以項(xiàng)目中絕大部分代碼均在此編寫(xiě)。
view 可以引入通用模板來(lái)減少代碼量,具體查看文檔
Use generic views
3、view引入HTML文件的方法:
在一個(gè)app下建立一個(gè)templates文件夾,將html文件放進(jìn)去該文件夾
這里其實(shí)不一定要把HTML文件放在這個(gè)templates里,可以隨意定義
不過(guò),需要在setting.py里,找到templates,
修改DIRS:[ os.path.join (BASE_DIR,’你定義的html存放的文件夾’)]
在app下 view.py 文件,在里面寫(xiě)好view函數(shù)
def 函數(shù)名(request):
return render(request,’index.html’)
render(渲染)需要三個(gè)變量, 第一個(gè)變量是request請(qǐng)求,第二個(gè)是模版所在目錄,第三個(gè)是一個(gè)字典(可選),字典用于對(duì)應(yīng)模板里設(shè)計(jì)的變量,可以用locals()將函數(shù)里設(shè)計(jì)的變量自動(dòng)轉(zhuǎn)換為字典
4、在對(duì)于app下創(chuàng)建一個(gè)urls.py ,寫(xiě)入如下內(nèi)容
from django.urls import pathfrom . import viewsurlpatterns = [ path(’’, views.index, name=’index’),]
5、在項(xiàng)目文件夾里找到 urls.py 加入如下內(nèi)容
from django.urls import include, pathurlpatterns = [ path(’polls/’, include(’polls.urls’)), path(’admin/’, admin.site.urls),]
對(duì)于<a>標(biāo)簽里的 href 可以用 {% url ’url名’ %}來(lái)代替,url名指的是 urls.py 里的path(’login.html/’, views.my_login, name=’url名’),
Django 中通常使用 get_object_or_404()來(lái)捕捉 404 錯(cuò)誤,而不用自己寫(xiě) try...except
def detail(request, question_id): question = get_object_or_404(Question, pk=question_id) return render(request, ’polls/detail.html’, {’question’: question})
補(bǔ)充:django中url與view配置方法
django中url與view配置方法(一)url.py
from django.conf.urls import urlfrom . import viewsurlpatterns = [ url(r’^$’, views.showAssets, name=’show_assets’),]
views.py
# -*- coding: utf-8 -*-from django.shortcuts import render_to_response# Create your views here.def showAssets(request): return render_to_response(’assets_index.html’, {})django中url與view配置方法(二)
url.py
# -*- coding: utf-8 -*-from django.conf.urls import urlfrom app001.views import IndexViewurlpatterns = [ url(r’^admin/’, admin.site.urls), url(r’^$’, IndexView.as_view(), name='index'), ]
views.py
# -*- coding: utf-8 -*-from django.views.generic.base import Viewfrom django.shortcuts import render# Create your views here.class IndexView(View): def get(self, request): return render(request, ’index.html’, {})
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. js實(shí)現(xiàn)跳一跳小游戲2. PHP設(shè)計(jì)模式(四)原型模式Prototype實(shí)例詳解【創(chuàng)建型】3. Python編寫(xiě)nmap掃描工具4. JVM之class文件結(jié)構(gòu)5. 10個(gè)提供免費(fèi)PHP腳本下載的網(wǎng)站6. js實(shí)現(xiàn)貪吃蛇小游戲(加墻)7. Django通過(guò)設(shè)置CORS解決跨域問(wèn)題8. SpringBoot 開(kāi)發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI9. 使用idea 去除 html 代碼前的行號(hào)和空行的方法詳解10. php5.6不能擴(kuò)展redis.so的解決方法
