0

私はdjangoアプリを持っていますが、1つの問題があります.カテゴリとページアプリケーションには同じURLがあります:

ここにcategory.urls.pyがあります:

urlpatterns += patterns('',
    url('(?P<slug>[0-9A-Za-z-_.]+)/$', Category.as_view(), name='category')
)

そしてここに page.urls.py があります:

urlpatterns += patterns('',
   url(r'^(?P<slug>[0-9A-Za-z-_.]+)$', Page.as_view(), name='page')
)

ここに問題があります-そのようなURLでページを開くことはできないので、この解決策が必要です:

ここに URL からのスラッグを含むカテゴリが存在する場合 - カテゴリ ビューを開きます。そのような URL を持つカテゴリがない場合は、ページ ビューに移動します。

しかし、次のような追加の機能を作成せずに、django で RIGHT を使用してこれを行う方法がわかりません。

def freeurl(request, slug):
   try:
      Category.objects.get(slug=slug)
      go to Category view
   except Category.DoesNotExists:
       go to Page view

出来ますか ?

4

2 に答える 2

0
urlpatterns += patterns('',
    url(
        r'^category/(?P<slug>[0-9A-Za-z-_.]+)/$', 
        Category.as_view(), 
        name='category'
    )
)

urlpatterns += patterns('',
   url(
       r'^page/(?P<slug>[0-9A-Za-z-_.]+)/$', 
       Page.as_view(), 
       name='page'
   )
)
于 2013-03-28T01:44:37.167 に答える
0

簡単です: 両方urls.pyを異なる接頭辞で含めます。)

メインurls.py:

urlpatterns = patterns('',
    # ... snip ...
    (r'^category/', include('category.urls')),
    (r'^page/', include('page.urls')),
)

編集:

あなたの提案は次のようになります。

def freeurl(request, slug):
    try:
        cat = Category.objects.get(slug=slug)
    except Category.DoesNotExist:
        try:
            page = Page.objects.get(slug=slug)
        except Page.DoesNotExist:
            raise Http404()
        else:
            return render_to_response('page.html', {'object': page}, context_instance=RequestContext(request))
    else:
        return render_to_response('cat.html', {'object': cat}, context_instance=RequestContext(request))

編集2:

あなたの問題を正確に解決するプロジェクトがあります。チェックしてください:

https://github.com/jacobian/django-multiurl

于 2013-03-27T22:56:51.793 に答える