如何配置Django视图和URL来呈现特定模板 [英] How to configure Django views and urls to render specific templates

查看:101
本文介绍了如何配置Django视图和URL来呈现特定模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我调出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'),
)


推荐答案


  1. myapp 应用的网址包含在 mysite / urls.py中

  1. Include urls of your myapp app in mysite/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




  1. 添加模板在 myapp / templates / myapp / 中。添加 home.html something.html

  1. Add your templates in myapp/templates/myapp/. Add home.html and something.html.

现在,忘记了.html

Now forget, the `.html

这篇关于如何配置Django视图和URL来呈现特定模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆