简介:许多朋友询问Django如何自动生成URL。本文的首席CTO笔记将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!
提示您在urls.py中的导入视图中错了
您可以查看此目录中是否有__init__.py文件。
实际上,使用django-admin createApp appName时,已经编写了自动创建文件目录。
流链接功能导入
1:直接导入视图功能
来自django.conf.urls.defaults导入 *
从mysite.views导入hello
urlpatterns =模式('',,
(r'^hello/$',你好),
(r'^time/$',时间),
治愈
2:在介绍软件包模块的名称和函数的功能中,而不是函数本身
来自django.conf.urls.defaults导入 *
从缅甸进口视图
urlpatterns =模式('',,
(r'^Hello/$','views.hello'),
(r'^time/$','views.time'),
治愈
3:无需导入任何视图内容,写出字符串的清晰描述
来自django.conf.urls.defaults导入 *
urlpatterns =模式('',,
(r'^Hello/$','mysite.views.hello'),
(r'^time/$','mysite.views.time'),
治愈
4:提取公共视图前缀
来自django.conf.urls.defaults导入 *
urlpatterns =模式('mysite.views',
(r'^Hello/$','Hello'),
(r'^time/$','time'),
治愈
5:partterns()返回对象的添加到对象
老的:
来自django.conf.urls.defaults导入 *
urlpatterns =模式('mysite.view',,
(r'^Hello/$','Hello'),
(r'^time/$','time'),
(r'^other/$','mysite.othother.oth'),
治愈
新的:
来自django.conf.urls.defaults导入 *
urlpatterns =模式('mysite.view',,
(r'^Hello/$','Hello'),
(r'^time/$','time'),
治愈
urlpatterns +=模式('mysite.OthoShts',,
(r'^other/$','其他'),
治愈
6:到目前为止,在所有URLCONF示例中,我们都非常简单,即
如果您要捕获的URL零件并添加小括号,Django将将捕获的文本传递到视图函数。
在高级用法中,您还可以使用“命名”正则表达组捕获URL并将其作为“关键字”参数传递给视图。
在Python正则表达式中,正则表达组的语法(?pnamepatrn)是该组的名称,而模式是一种匹配模式。
以下是使用未知组的URLCONF的示例:
来自django.conf.urls.defaults导入 *
从缅甸进口视图
urlpatterns =模式('',,
(r'^arcticles/(d {4})/$',views.year_archive),
(r'^arcticles/(d {4})/(d {2})/$',view.moth_archive),
治愈
以下是相同的URLCONF,它重写了命名组:
来自django.conf.urls.defaults导入 *
从缅甸进口视图
urlpatterns =模式('',,
(r'^arcticles/(?pyeard {4})/$',veiws.year_archive),
;
治愈
如果您不带命名组,请求/Arcticle/2006/03 //将等于此功能呼叫:
month_archive(请求,'2006','03')
对于命名组,相同的请求就是这样的函数调用:
month_archive(请求,年='2006',月= '03')
可以看出,使用命名组可以使您的urlconf更清晰,减少参数顺序可能与潜在的错误混合在一起,
您还可以对定义中的参数进行排序。
7:查看冗余:
#urls.py
来自django.conf.urls.defaults导入 *
从缅甸进口视图
urlpatterns =模式('',,
(r'^(foo)/$',views.foobar_view),
(r'^(bar)/$',views.foobar_view),
治愈
#views.py
来自django.shortcuts导入render_to_response
从mysite.models导入mymodel
def foobar_view(请求,URL):
m_list = mymodel.objects.filter(is_new = true)
如果url =='foo':
template_name ='Template1.html'
elif url =='bar':
template_name ='Template2.html'
return render_to_response(template_name,{'m_list':m_list})
使用上述方法可以减少视图冗余
8:固定参数传递到URL:
#urls.py
来自django.conf.urls.defaults导入 *
从缅甸进口视图
urlpatterns =模式('',,
(r'^foo/$',views.foobar_view,{'template_name':'template1.html'}),
(r'^bar/$',views.foobar_view,{'template_name':'template2.html'}),
治愈
#views.py
来自django.shortcuts导入render_to_response
从mysite.models导入mymodel
def foobar_view(请求,template_name):
m_list = mymodel.objects.filter(is_new = true)
return render_to_response(template_name,{'m_list':m_list})
一些URL参数的详细说明:
/mydata/jan/01/
/mydata/jan/02/
/mydata/jan/03/
以上是我们可以以不同方式实施的三个URL
1 :( r'^mydata/(/w {3})/(/d/d)',views.mydata)mydata(请求,'jan','01')
2:(r'^mydata/(?pmonth/w {3})/(?pday/d/d)',view.mydata)mydata(请求,月='jan',day',day ='01')
3 :( r'^mydata/birthday/$',views.mydata,{月:'jan',day:'01'})mydata(请求,月='jan',day = '01')
9:包括导入:
来自django.conf.urls.defaults导入 *
urlpatterns =模式('',,
(r'^weblog/',包括('mysite.blog.urls'),
(r'^photos/',包括('mysite.photos.urls'),
(r'^of/$','mysite.views.about'),
治愈
10:示例:
验证用户是否已登录:
以下是三个观点
def my_view1(请求):
如果未request.user.is_authenticated():
返回httpresponseredirect('/accounts/login/')
#...
返回render_to_response('template1.html')
def my_view2(请求):
如果未request.user.is_authenticated():
返回httpresponseredirect('/accounts/login/')
#...
返回render_to_response('template2.html')
def my_view3(请求):
如果未request.user.is_authenticated():
返回httpresponseredirect('/accounts/login/')
#...
返回render_to_response('template3.html')
以下是视图上的包装:
deficuires_login(查看):
def new_view(请求, *args,** kwargs):
如果未request.user.is_authenticatienatienationed():#如果用户未登录,请跳到登录接口
返回httpresponseredirect('/accounts/login/')
返回视图(请求, *args,** kwargs)#otherwise
返回new_view #turn to new_view值:登录视图或查看视图
以下是URL配置:
来自django.conf.urls.defaults导入 *
来自mySite.views import oneques_login,my_view1,my_view2,my_view3
urlpatterns =模式('',,
(r'^view1/$',quirenes_login(my_view1)),
(r'^view2/$',quirenes_login(my_view2)),
(r'^view3/$',quirenes_login(my_view3)),
治愈
在Django中,您通常需要配置图片,视频和其他格式文件。在配置过程中,它更为复杂。这是一个记录:
将以下目录添加到文件末尾以存储上传的文件
在模型中,图像字段是%y代表年份的年份,%m表示一个月。上传文件时,表示将上传到图像目录和当前限制目录的文件夹。
image = models.imagefield(upload_to =“ image/%y/%m”,空白= true)
其中,SRC中的{{Media_url}}将在模板中渲染,以用作 /媒体 /
如果要在模板中使用{{Media_url}},请在“ template”的“ context_processis”选项中添加django.template.contexors.media。
通过上述步骤,结果基本上可以正常呈现在前端,但是您需要在图片中添加一个URL才能正常显示。
第一个行为介绍了静态文件的服务器,第二个行为是在配置文件中的介质_root中介绍的
加入URL:
大写:template_dirs,database_name等。最重要的设置。root_urlconf将被告知urlConf,将使用此站点中的Python模块。
访问URL / hello /时,Django加载基于root_urlconf的URLCONF。然后匹配urlConf中的urlpattern,直到找到匹配的urlconf,直到找到匹配的urlpattern。范围。
正如我们在第一个视图示例中看到的那样,视图函数必须返回httpresponse.ince完成,django将完成其余的过渡python对象,并带有HTTP头和身体的合适的Web响应
综上所述:
进来的请求已转移到/hello/。
Django通过setter.py中的root_urlconf配置来确定root urlconf。
Django在URLCONF中的所有URL模式下找到了第一个匹配/Hello/条目。
如果找到匹配,您将调用相应的视图功能
视图函数返回httpressponse
Django将httpresponse转换为合适的HTTP响应,并显示在网页中
在urls.py文件中
只需在URL匹配中添加.html。在此方式中,访问网页时将会有.html
URL(r'^product.html',views.product.product.product,name ='product'),
呢Doctype HTML
html lang =“ en”
头
meta charset =“ utf-8”
标题jing'an/标题
/头
身体
a href =“ ssl.zzidc.com” img src =“ images/a.jpg”/a
/身体
/html
在A标签中,可以添加IMG标签以添加图片的链接
结论:以上是Django如何向您介绍如何自动生成URL的主要CTO注释的全部内容。我希望这对每个人都会有所帮助。如果您想进一步了解这一点,请记住收集并关注此网站。