Django URL和View的关系说明

URL和View的关系

1、每次用户发来一个HttpRequest请求,Django会用URL_pattern与请求进行匹配,匹配到第一个URL_pattern就会把请求转向对应的view

2、view用来响应request,并返回response,response里可以包含网页文件呀,图片等等。所以项目中绝大部分代码均在此编写。

view 可以引入通用模板来减少代码量,具体查看文档

Use generic views

3、view引入HTML文件的方法:

在一个app下建立一个templates文件夹,将html文件放进去该文件夹

这里其实不一定要把HTML文件放在这个templates里,可以随意定义

不过,需要在setting.py里,找到templates,

修改DIRS:[ os.path.join (BASE_DIR,\’你定义的html存放的文件夹\’)]

在app下 view.py 文件,在里面写好view函数

def 函数名(request):

return render(request,\'index.html\')

render(渲染)需要三个变量, 第一个变量是request请求,第二个是模版所在目录,第三个是一个字典(可选),字典用于对应模板里设计的变量,可以用locals()将函数里设计的变量自动转换为字典

4、在对于app下创建一个urls.py ,写入如下内容

from django.urls import path​
from . import views​
urlpatterns = [ ​
 path(\'\', views.index, name=\'index\'),​
]

5、在项目文件夹里找到 urls.py 加入如下内容

from django.urls import include, path
​
urlpatterns = [
 path(\'polls/\', include(\'polls.urls\')),
 path(\'admin/\', admin.site.urls),
]

对于<a>标签里的 href 可以用 {% url \’url名\’ %}来代替,url名指的是 urls.py 里的path(\’login.html/\’, views.my_login, name=\’url名\’),

Django 中通常使用 get_object_or_404()来捕捉 404 错误,而不用自己写 try…except

def detail(request, question_id):
 question = get_object_or_404(Question, pk=question_id)
 return render(request, \'polls/detail.html\', {\'question\': question})

补充:django中url与view配置方法

django中url与view配置方法(一)

url.py

from django.conf.urls import url
from . import views
urlpatterns = [
 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 url
from app001.views import IndexView
urlpatterns = [
 url(r\'^admin/\', admin.site.urls),
 url(r\'^$\', IndexView.as_view(), name=\"index\"), ]

views.py

# -*- coding: utf-8 -*-
from django.views.generic.base import View
from django.shortcuts import render
# Create your views here.
class IndexView(View):
 def get(self, request):
  return render(request, \'index.html\', {})

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容