如何配置Django视图和URL来呈现特定模板 [英] How to configure Django views and urls to render specific templates
问题描述
当我调出127.0.0.1:8000时,当前显示的页面是 something.html
模板。
When I bring up 127.0.0.1:8000, the current page that show up is something.html
template.
我需要使它在首次启动时显示为index.html,然后单击其他部分时,它应该转到127.0.0.1:8000/something.html(或127.0.0.1:8000/myapp/something)。 html)。
I would need to make it appear index.html at first launch, then when I click on other parts,it should go to 127.0.0.1:8000/something.html (or 127.0.0.1:8000/myapp/something.html).
实现此目标的结构是什么?
我经常收到错误消息:当前的URL与所有这些都不匹配。
当前,我的结构是
project
---myapp
---admin.py
---models.py
---url.py
---views.py
---static
---templates
---myapp
---html files
---mysite
---settings.py
--- url.py
在我的设置下。py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
mysettings / url.py
under mysettings/url.py
urlpatterns = [
# Examples:
url(r'^$', 'mysite.views.home', name='home'),
url(r'^myapp/', include('myapp.urls')),
url(r'^admin/', include(admin.site.urls)),
]
mysite / urls.py
mysite/urls.py
from django.conf.urls import include, url
from django.contrib import admin
from django.conf.urls import patterns
from django.views.generic import TemplateView
urlpatterns = [
# Examples:
url(r'^', include('myapp.urls')),
url(r'^admin/', include(admin.site.urls)),
]
admin.site.site_header = 'Admin'
myapp / url.py
myapp/url.py
from . import views
from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView
urlpatterns = patterns('',
#brings up something.html when we comment it out. No module found if included.
#url(r'^$', views.home, name='home'),
url(r'^$', views.post_list, name='post_list'),
)
推荐答案
- 将
myapp
应用的网址包含在mysite / urls.py中
- Include urls of your
myapp
app inmysite/urls.py
from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings
urlpatterns = [
url(r'^', include('myapp.urls')),
url(r'^admin/', include(admin.site.urls)),
]
现在,所有以 127.0.0.1:8000
开头的网址可以处理请求的视图。我建议您阅读此书,以了解Django URL调度程序的工作原理:[Django文档-URL Dispatcher]( https://docs.djangoproject.com/en/1.8/topics/http/urls/ )。
2.在您的 myapp.urls
中添加新路线:
Now, all urls, starting by 127.0.0.1:8000
, will check if there is a view that can handle the request. I recommend you to read this to understand how Django URL dispatcher works : [Django documentation - URL Dispatcher] (https://docs.djangoproject.com/en/1.8/topics/http/urls/).
2. Add new route in your myapp.urls
:
from django.conf.urls import url, patterns
from . import views
urlpatterns = patterns('',
url(r'^$', views.home, name='home'),
url(r'^something$', views.something, name='something'),
url(r'^posts$', views.post_list, name='post_list'),
)
现在:
127.0.0.1:8000 /
将执行 views.home
127.0.0.1:8000/something
的代码 views.something
127.0.0.1:8000/posts
的对象将执行 views.post_list
现在让我们定义这些视图
Now :
127.0.0.1:8000/
will executed code of views.home
127.0.0.1:8000/something
will executed code of views.something
127.0.0.1:8000/posts
will executed code of views.post_list
Let's define these view now
3:在<$ c中定义视图$ c> myapp.views :
from django.shortcuts import render
def home(request):
"""
Return home page
"""
return render(request, 'myapp/home.html')
def something(request):
"""
Return something page
"""
return render(request, 'myapp/something.html')
def post_list(request):
"""
Return something page
"""
# do what you want
- 添加模板在
myapp / templates / myapp /
中。添加home.html
和something.html
。
- Add your templates in
myapp/templates/myapp/
. Addhome.html
andsomething.html
.
现在,忘记了.html
Now forget, the `.html
这篇关于如何配置Django视图和URL来呈现特定模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!