Django:点 url 在应用程序的根后面?
Django: point url behind root of app?
我正在阅读 Django 的教程 (Django tutorial part 3),我正在添加视图和 urls。
在此演示应用程序中,他们为民意调查添加了子视图,例如/polls/34/
进入第 34 轮投票。引自教程:
When somebody requests a page from your website – say, “/polls/34/
”, Django will load the mysite.urls
Python module because it’s pointed to by the ROOT_URLCONF
setting. It finds the variable named urlpatterns and traverses the regular expressions in order. After finding the match at '^polls/'
, it strips off the matching text ("polls/
") and sends the remaining text – "34/
" – to the ‘polls.urls’ URLconf for further processing. There it matches r'^(?P<question_id>[0-9]+)/$'
, resulting in a call to the detail()
view like so:
我的问题如下:
假设您有一个与您的应用程序相关的视图,但是 url - 以应用程序名称为前缀 - 没有新视图本身那么有意义。您如何使视图(它是应用程序的一部分)从新路径名开始。
这可能令人困惑,所以这里有一个例子。
假设您有一个应用程序(套牌)供用户使用一组卡片制作套牌。然后 /deck/regex 会带你到给定的牌组。如果有人想在牌组中查看有关一张牌的更多信息,那么 /decks/cards/regex 就没那么有意义了 /cards/regex 因为一张牌可以在多个牌组中。
这不是一个完美的例子,但我认为它突出了我正在尝试做的事情。
你所说的很容易做到,但没有做到,因为它会导致路由方面的很多混乱。
谈论你的套牌例子。假设您在一个名为 decks 的应用程序中,根 urls.py 文件是这样的:
from django.conf.urls import url,include
from django.contrib import admin
from Decks import views as deckviews
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'/cards/regex^$',deckviews.get_card_information),
url(r'^decks/',include('deckviews.urls')),
]
Decks 应用中的 urls.py 可以是:
from django.conf.urls import url,include
import views
urlpatterns = [
url(r'^regex/',views.generate_decks)
]
这是一个生成牌组的示例,decks/regex 从牌组应用程序的 urls.py 中调用生成随机牌组,同时您获得所需的 cards/regex 指向decks 应用程序中的视图,但仍然具有您想要的 url。
通过这种方式,您可以将任何 url 路由到任何函数,这就是 django 的优点。这很少使用,因为当应用程序变得越来越大和越来越复杂时,它会造成很多混乱。
希望这对您有所帮助。干杯!
我有一些 URL 给你:
第一名:
# The url in Projects, which you have to include to link your app.
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^table/', include('table.urls')),
]
现在这个大写字母就是您的代码:
# So you can change is to:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('table.urls',namespace="table")),
]
然后:在tables.urls.py你可以做任何你想做的事情:
urlpatterns = [ url(r'^$', views.index, name='index'),
url(r'^decks/(?P<pk>.*)$', views.decksView, name='decksView'),
url(r'^card/(?P<pk>.*)$', views.cardView, name='cardView'),
]
我正在阅读 Django 的教程 (Django tutorial part 3),我正在添加视图和 urls。
在此演示应用程序中,他们为民意调查添加了子视图,例如/polls/34/
进入第 34 轮投票。引自教程:
When somebody requests a page from your website – say, “
/polls/34/
”, Django will load themysite.urls
Python module because it’s pointed to by theROOT_URLCONF
setting. It finds the variable named urlpatterns and traverses the regular expressions in order. After finding the match at'^polls/'
, it strips off the matching text ("polls/
") and sends the remaining text – "34/
" – to the ‘polls.urls’ URLconf for further processing. There it matchesr'^(?P<question_id>[0-9]+)/$'
, resulting in a call to thedetail()
view like so:
我的问题如下:
假设您有一个与您的应用程序相关的视图,但是 url - 以应用程序名称为前缀 - 没有新视图本身那么有意义。您如何使视图(它是应用程序的一部分)从新路径名开始。
这可能令人困惑,所以这里有一个例子。
假设您有一个应用程序(套牌)供用户使用一组卡片制作套牌。然后 /deck/regex 会带你到给定的牌组。如果有人想在牌组中查看有关一张牌的更多信息,那么 /decks/cards/regex 就没那么有意义了 /cards/regex 因为一张牌可以在多个牌组中。
这不是一个完美的例子,但我认为它突出了我正在尝试做的事情。
你所说的很容易做到,但没有做到,因为它会导致路由方面的很多混乱。
谈论你的套牌例子。假设您在一个名为 decks 的应用程序中,根 urls.py 文件是这样的:
from django.conf.urls import url,include
from django.contrib import admin
from Decks import views as deckviews
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'/cards/regex^$',deckviews.get_card_information),
url(r'^decks/',include('deckviews.urls')),
]
Decks 应用中的 urls.py 可以是:
from django.conf.urls import url,include
import views
urlpatterns = [
url(r'^regex/',views.generate_decks)
]
这是一个生成牌组的示例,decks/regex 从牌组应用程序的 urls.py 中调用生成随机牌组,同时您获得所需的 cards/regex 指向decks 应用程序中的视图,但仍然具有您想要的 url。
通过这种方式,您可以将任何 url 路由到任何函数,这就是 django 的优点。这很少使用,因为当应用程序变得越来越大和越来越复杂时,它会造成很多混乱。
希望这对您有所帮助。干杯!
我有一些 URL 给你: 第一名:
# The url in Projects, which you have to include to link your app.
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^table/', include('table.urls')),
]
现在这个大写字母就是您的代码:
# So you can change is to:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('table.urls',namespace="table")),
]
然后:在tables.urls.py你可以做任何你想做的事情:
urlpatterns = [ url(r'^$', views.index, name='index'),
url(r'^decks/(?P<pk>.*)$', views.decksView, name='decksView'),
url(r'^card/(?P<pk>.*)$', views.cardView, name='cardView'),
]