2012-10-16 35 views
15

Tôi mới dùng django và một trong những thứ mà tôi vẫn đang học là url_patterns. Tôi thiết lập một ứng dụng trang để xử lý đường dẫn gốc (http://www.mysite.com) cũng như một số trang tĩnh như trang giới thiệu. Tôi đã tìm ra cách thiết lập mẫu url cho đường dẫn gốc, nhưng tôi không thể có được trang web để hướng đường dẫn '/ về' đến các trang "về" xem.Trong Django, Làm thế nào để bạn viết mẫu url cho '/' và các url gốc khác

Đây là urls.py chính của tôi

from django.conf.urls import patterns, include, url 
from django.conf import settings 
urlpatterns = patterns('', 
    url(r'^polls/', include('polls.urls')), 
    url(r'^$', 'pages.views.root'), 
    url(r'^/', include('pages.urls')), 
) 

ở đây là các trang của tôi urls.py

from django.conf.urls import patterns, include, url 
urlpatterns = patterns('pages.views', 
     url(r'^about', 'about'), 
) 

Dưới đây là các trang của tôi views.py

# Create your views here. 
from django.shortcuts import render_to_response 
from django.template import RequestContext 
from django.http import HttpResponse, HttpResponseRedirect 
from django.core.urlresolvers import reverse 

def root(request): 
    return render_to_response('pages/root.html',context_instance=RequestContext(request)) 
def about(request): 
    return render_to_response('pages/about.html',context_instance=RequestContext(request)) 

Nếu tôi thay đổi tập tin urls.py chính để có r'^a/', include('pages.urls') thì đường dẫn '/ a/about' hướng đến hành động tương tự .. vì vậy tôi nghĩ rằng nó phải là một vấn đề trong cách tôi đang viết mẫu url trong tập tin này. Nhưng, tôi không thể tìm ra cách thay đổi nó. Có ai giúp được không?

+0

cho người dân bỏ phiếu để đóng câu hỏi này, bạn sẽ nhớ là mang tính xây dựng hơn và bình luận để cho tôi biết những gì hướng dẫn không được đáp ứng, và/hoặc làm thế nào tôi có thể chỉnh sửa câu hỏi này để đáp ứng tốt hơn các yêu cầu này? – jay

Trả lời

25

Đã tìm ra vấn đề là gì. Các url_pattern thích hợp vào mức độ của dự án là:

urlpatterns = patterns('', 
    url(r'^polls/', include('polls.urls')), 
    url(r'^$', 'pages.views.root'), 
    url(r'', include('pages.urls')), 
) 

Khi điều này được đặt ra, '/ về' và con đường đơn giản khác chỉ đạo đúng cách.

Cảm ơn tất cả mọi người!

+0

Tôi muốn thêm cho bất kỳ ai khác đã bỏ lỡ nó: 'trang' là một ứng dụng trong dự án của OP chứ không phải cú pháp cụ thể của Django. Nó có thể là 'other_pages' hoặc một cái gì đó tương tự. –

5

Hãy thử điều này, cho url.py vào mức độ dự án:

urlpatterns = patterns('', 
# Examples: 
url(r'^$', 'apps_name.views.home', name='home'), 

# Uncomment the admin/doc line below to enable admin documentation: 
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 

# Uncomment the next line to enable the admin: 
url(r'^admin/', include(admin.site.urls)), 

(r'^about/', include('about.urls')), 
) 

và sau đó là url.py cho các ứng dụng về

urlpatterns = patterns('', 
    url(r'^$', direct_to_template, {"template": "about/about.html"}, name="about"), 
) 

Đi vào tài khoản mà biểu hiện thường xuyên được đánh giá từ trên dưới cùng, sau đó nếu đường dẫn phù hợp với regexp nó sẽ nhập. Để tìm hiểu thêm về regexp google hoặc thử cuốn sách tuyệt vời từ Zed Shaw về regexps

1

Lưu ý rằng từ Django phiên bản 2.0 mẫu URL đã thay đổi để sử dụng django.urls.path() Kiểm tra Ví dụ ở đây: link

from django.urls import path 

from . import views 

urlpatterns = [ 
    # ex: /polls/ 
    path('', views.index, name='index'), 
    # ex: /polls/5/ 
    path('<int:question_id>/', views.detail, name='detail'), 
    # ex: /polls/5/results/ 
    path('<int:question_id>/results/', views.results, name='results'), 
    # ex: /polls/5/vote/ 
    path('<int:question_id>/vote/', views.vote, name='vote'), 
] 
Các vấn đề liên quan