2010-07-08 29 views
16

tôi muốn đặt trang chính hoặc trang chỉ mục cho ứng dụng của mình. tôi đã cố gắng thêm MAIN_PAGE trong settings.py và sau đó tạo ra một cái nhìn main_page trả về một đối tượng main_page, nhưng nó không hoạt động Ngoài ra, tôi cố gắng thêm trong urls.py một tuyên bố nhưDjango cách đặt trang chính

(r'^$', index), 

nơi indexshould là tên của tệp index.html trên thư mục gốc (nhưng rõ ràng là nó không hoạt động)

Cách tốt nhất để đặt trang chính trong trang web Django là gì?

cảm ơn!

Trả lời

12

Nếu bạn muốn đề cập đến một trang tĩnh (không có nó đi qua bất kỳ xử lý động), bạn có thể sử dụng chức năng direct_to_template nhìn từ django.views.generic.simple. Trong conf URL của bạn:

from django.views.generic.simple import direct_to_template 
urlpatterns += patterns("", 
    (r"^$", direct_to_template, {"template": "index.html"}) 
) 

(Giả sử index.html là cội rễ của một trong những mẫu thư mục của bạn.)

+1

Giải pháp này đã không được chấp nhận. Xem câu trả lời đã chọn tại http://stackoverflow.com/questions/11428427/no-module-named-simple-error-in-django –

1

Bạn có thể sử dụng chung chức năng direct_to_template xem:

# in your urls.py ... 
... 
url(r'^faq/$', 
    'django.views.generic.simple.direct_to_template', 
    { 'template': 'faq.html' }, name='faq'), 
... 
+0

cảm ơn rất nhiều! – dana

10

Cách mới được ưu tiên làm điều này sẽ được sử dụng lớp TemplateView. Xem số này SO answer nếu bạn muốn di chuyển từ direct_to_template.

Trong chính urls.py tập tin của bạn:

from django.conf.urls import url 
from django.contrib import admin 
from django.views.generic.base import TemplateView 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    # the regex ^$ matches empty 
    url(r'^$', TemplateView.as_view(template_name='static_pages/index.html'), 
     name='home'), 
] 

Lưu ý, tôi chọn để đặt bất kỳ trang tĩnh linke index.html trong thư mục riêng của mình static_pages/ trong thư mục templates/.

+0

Giải pháp này hoạt động hoàn hảo! – Deadpool

Các vấn đề liên quan