2011-02-06 16 views
1

私はroot urls.pyとapp urls.pyを持っています。私のルートでは、私はこのている:このURLで何が問題になっていますか?

:私は

from django.conf.urls.defaults import * 

urlpatterns = patterns('realestate.properties.views', 
    url(r'^$', 'property_list', {'template_name': 'properties/property_list.html'}, name='property_list'), 
    url(r'^(?P<slug>[-\w]+)/$', 'property_detail', { 'template': 'property_detail.html' }, name='property_details'), 
) 

を以下している私のアプリのURLで

from django.conf.urls.defaults import * 
from django.contrib import admin 

admin.autodiscover() 

urlpatterns = patterns('', 
    (r'^$', include('realestate.properties.urls')), 
    (r'^admin/', include(admin.site.urls)), 
) 

今、私のテンプレートで、私はこのようになります詳細ビューへのリンクを持っています

* つかまえNoRevers:私はエラーを取得するこのページをレンダリング

{% url property_details property.slug %} 

毎回eMatchのレンダリング中:引数 '(u'111-front-st'、) 'およびキーワード引数' {} 'を含む' property_details 'のリバースは見つかりません*

私が何をしても、 。私はIDをキャプチャしようとしたが、何も動作していない、なぜ私は何かを明らかに欠けている場合、私は本当に混乱している前に何度もURLを使用している。ここで間違っているものは見ますか?

おかげ

ジェフ

答えて

2

私はあなたがアプリのURLを含めるあなたのURLconfから$をドロップする必要があると思います。おそらく^も削除できます。

urlpatterns = patterns('', 
    (r'^', include('realestate.properties.urls')), 
    (r'^admin/', include(admin.site.urls)), 
) 

http://docs.djangoproject.com/en/1.2/topics/http/urls/#including-other-urlconfs

Note that the regular expressions in this example don't have a $ (end-of-string match character) but do include a trailing slash. Whenever Django encounters include(), it chops off whatever part of the URL matched up to that point and sends the remaining string to the included URLconf for further processing.

2

このような何か:/あなたが最初の正規表現 "キャッチすべて" になります(Reinerのポストで推薦しのように)それ以外の場合は

from django.conf.urls.defaults import * 
from django.contrib import admin 

admin.autodiscover() 

urlpatterns = patterns('', 
    (r'^$', 'realestate.properties.views.property_list'), 
    (r'^properties/', include('realestate.properties.urls')), 
    (r'^admin/', include(admin.site.urls)), 
) 

をし、管理者は決して一致しません。

「すべてをキャッチする」の前に管理正規表現を置くこともできますが、「管理者」のようなスラッグがあるとどうなりますか?だから私は最初のレベルで/<slug>/というURLスキームに対する助言をします。代わりに、/<object-type>/<slug>/を使用してください。これは、今後他のもののためのスペースを確保します。

+0

Pauloさん、ありがとうございました。これはうまくいきましたが、私はこれに同意しません。むしろ私のルートURLを使ってアプリのURLを入れ、アプリ関連のパターンをルートから外しておきます。私はいつも他のプロジェクトで私のアプリのURLをマップして他のURLとの問題なしに含まれている。私はしかし、ベースURLを含めてすべての私の試合で$を削除することを忘れて、それは正常に動作しました。 – JeffTaggarty

関連する問題