2012-10-16 10 views
15

Django'da yeniyim ve hâlâ öğrenmekte olduğum şeylerden biri de url_patterns. Kök yolunu (http://www.mysite.com) ve yaklaşık sayfa gibi bazı statik sayfaları işlemek için bir sayfa uygulaması oluşturdum. Kök yolu için url şablonunu nasıl ayarlayacağımı anladım, ancak sitenin "/ about" yolunu "about" sayfalarına yönlendirmesini sağlayamıyorum. İşte Django'da, '/' ve diğer kök tabanlı URL'ler için url şablonunu nasıl yazıyorsunuz?

Şunu değiştirirsem sayfalarım

# 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)) 

views.py edilir burada

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')), 
) 

sayfalarım İşte

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

urls.py benim ana urls.py olduğunu ana urls.py dosyasının r'^a/', include('pages.urls') olması ve ardından '/ a/about' yolunun ilgili eylemi yönlendirmesidir. Bu yüzden bir sorun olması gerektiğini düşünüyorum Bu dosyada url modelini yazma biçimim. Ama nasıl değiştireceğimi anlayamıyorum. Biri yardım edebilir mi? yaklaşık

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

düzenli ifade üstten değerlendirilir Burada dikkat edilmesi gerekenler uygulaması için daha sonra url.py

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')), 
) 

ve:

+0

, daha yapıcı olmayı dert ve bana bildirin açıklama yapacağı Hangi şartların yerine getirilmediğini ve/veya bu gereksinimleri daha iyi karşılamak için bu soruyu nasıl düzenleyebilirim? – jay

cevap

25

Sorunun ne olduğunu anlamaya çalışın. Proje seviyesinin üzerinde düzgün url_pattern geçerli:

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

bu yerde olduğu zaman, '/' hakkında ve diğer basit yolları düzgün yönlendirir.

Herkese teşekkürler! Django sürüm 2.0 den URL modeli burada django.urls.path() Kontrol Örneği kullanmak üzere değişti Not olduğunu

+0

Bunu özleyen başka birisine eklemek istiyorum: 'pages', OP'nin projesindeki bir uygulamadır, Django'ya özgü bir sözdizimi değildir. Diğer_pages veya benzeri bir şey olabilirdi. –

5

proje düzeyinde url.py için, bu deneyin alttan, sonra yol regexp uyuyorsa girecektir. Regexp google hakkında daha fazla bilgi edinmek veya Zed Shaw'dan harika kitabı yaklaşık regexps

1

: Bu soruyu kapatmak için oylama insanlara 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'), 
] 
İlgili konular