简介:今天,首席CTO注释要与您分享如何配置有关Django的文档相关内容。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
当使用django命令生成项目的基本结构时,配置信息将保留在settings.py文件中,以与项目目录同名目录的目录中。在实际开发中,对于一个项目,这通常是不合适的。将设置配置文件授予几个文件。将在线使用的文件放在base.py文件中,在product.py文件上的在线文件,开发测试文件放在devert.py fileessencethis函数部门中很明确,这对于我们的在线和离线调试非常方便。
1)在同名项目中,创建一个设置包(目录中包含__init__.py的文件夹)。
2)在设置软件包中创建三个新文件:public base base.py(用于配置django默认配置文件),develop.py(用于开发环境)和product.py(用于生产环境)。
3)将原始设置的内容复制到base.py文件。
4)确认目录确定后,我们需要在base.py中修改时区和语言配置:
如果需要修改类似的公共零件,则可以在base.py(例如注册表应用程序)中修改它,这里没有示例。
5)之后,对于不同的在线和离线零件,我们只能导入base.py模块并将其修改为不同零件。例如,在线和离线对接不同的测试数据库,我们可以修改数据库连接:
6)修改Manage.py文件。使用自己的服务开始时,Django需要知道设置文件的路径。
7)生产时,请使用asgi.py(在django3.x中)或wsgi.py(django2.x版本),您可以更改生产配置文件的路径:
上述问题也有问题。如果在线和离线环境切换,我们需要更改代码,我们可以通过设置系统环境变量来动态获取它,以避免修改代码:
这样,Django通过在系统环境变量中读取Lipin_profile来加载不同的设置文件。
这可以删除原始设置.py文件!交叉
但是会有一个问题。您会发现我们无法访问以前的好网页,也找不到模板!
这是因为在先前的配置文件中,路径问题,因为我们的原始配置文件以同一名称为单位,现在我们被分为一个新软件包,因此我们需要转到第一级目录是我们需要的。
1.什么是urls.py
2. urls.py文件位置
3. urls.py配置格式
urlpatterns =模式('view prefix',
URL(r'^正则表达式1/$','view函数1',name =“ url标识符1”),
URL(r'^正则表达式2/$','view函数2',name =“ url标识2”),,
治愈
4.如何在urls.py中工作
在Django项目的开发中,就像普通的Web开发一样,不可能通过“ IMGS/BG.JPG”访问本地静态文件。有必要进行一些配置以实现静态文件访问。
首先,在项目根路径下创建一个新的静态文件夹,然后在静态文件夹下创建相应的CSS,IMGS,JS和其他文件夹,以存储静态文件,例如CSS,IMG,JS。
第二,项目配置
1.打开settings.py并将其添加到底部:
2.打开urls.py并将其添加到urlpatterns :(注意,如果您还将urls.py设置在博客目录中,则必须在blog/urls.py中进行修改。不要忘记导入设置):
(但是在测量之后,我可以完成静态文件的访问,而无需添加此文件)
3.在HTML模板的顶部添加:
然后以这种格式调用您需要的格式,例如:
最终重新运行该项目,Django可以找到本地静态文件,例如IMG。目前,可以使用IMG和其他文件显示与模板相对应的页面。
流链接功能导入
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.conf.urls导入模式,包括URL
从视图导入 *
urlpatterns =模式(
url(r'^Hello/$',Hello),
治愈
第二个URL写作是有问题的。导入模块编写应为来自app.views import Hello的格式。在Django中,这种导入方法应该是。
另外,像第二个一样,我通常以这种方式写:
url(r'^Hello/$','app.viwes.hello`),
查看Django书中的URL写作。
结论:以上是CTO首席执行官注释给您的Django URL如何介绍的全部内容。我希望这对每个人都会有所帮助。如果您仍然想进一步了解这一点,请记住要收集对该网站的关注。