【问题标题】:How to force django app to not serve a subdomain如何强制 django 应用程序不提供子域
【发布时间】:2010-12-18 11:28:34
【问题描述】:

我有两个独立的 django 应用程序,一个用于整个站点,第二个用于网上商店。我的主要应用在 http://www.sitedomain.com 下。现在我想在http://www.sitedomain.com/shop 下经营网店。有没有办法强制主项目不服务这个子域,让shop应用只在子域下运行?


编辑

从答案中尝试了解决方案,但 /shop 的所有链接仍然被主应用程序捕获。它的网址还有多个问题。他们中的大多数现在都不起作用了。

我的网址:

# Django 
urlpatterns = patterns('',
    url('^accounts/login/?$', login, {"template_name" : "admin/login.html"}, name='auth_login'),
    url('^accounts/logout/?$', logout, name='auth_logout'),
    (r'^favicon\.ico$', 'django.views.generic.simple.redirect_to', {'url': '/media/theme/img/s4lfav.ico'}),
    (r'^admin/(.*)', admin.site.root),
    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', {'packages': ('django.conf') }),
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': os.path.join(DIRNAME, "media"), 'show_indexes': True }),
)

# Login / Logout
urlpatterns += patterns('django.contrib.auth.views',
    url('^login/?$',  "login",  { "template_name" : "login.html" },  name='login'),
    url('^logout/?$', "logout", { "template_name" : "logged_out.html" }, name='logout'),
)

# Contact form
urlpatterns += patterns('contact_form.views',
    url(r'^contact$', "contact_form", { "form_class" : ContactForm }, name='contact_form'),
    url(r'^sent$', direct_to_template, { 'template': 'contact_form/contact_form_sent.html' }, name='contact_form_sent'),
)

# Sitemaps
urlpatterns += patterns("django.contrib.sitemaps.views",
    url(r'^sitemap.xml', 'sitemap', {'sitemaps': {"pages": PageSitemap}})
)

# Robots
urlpatterns += patterns('django.views.generic.simple',
    (r'^robots.txt', 'direct_to_template', {'template': 'robots.txt'}),
)


urlpatterns += patterns("manage.views",
    url(r'^manage$', "site", name="manage_site"),
    url(r'^manage$', "site", name="manage_site"),
)

# SITE
urlpatterns += patterns('views',
    url(r'^search', "search", name="search"),
    #url(r'^/$', "base_view", name="index_view"),
    #url(r'^/(?P<slug>.*)', "index_view", name="index_view"),
    url(r'^(?P<slug>.*)$', "index_view", name="index_view"),
    url(r'^$', "index_view", name="index_view"),
    #url(r'^/', "index_view", name="index_view"),
)

# Manage
urlpatterns += patterns('manage.views',
    url(r'^manage/applications$', "applications", name="applications"),
    url(r'^manage/install-application/(?P<name>\w+)$', "install_application", name="install_application"),
    (...)

【问题讨论】:

    标签: django dns subdomain django-urls


    【解决方案1】:

    在其 url.py 中明确列出主应用程序的所有支持的 url,而不是在顶层使用通配符。

    【讨论】:

    • 和剂量 SITE_URL 影响任何东西?还是只是为了站点的中间件?
    • 那么索引视图呢,设置在 '/' 下?因为如果它被设置为 '$' 我不会得到任何地方。
    • 我不知道 SITE_URL 是什么。它似乎与 Django 无关(至少在当前版本中没有)。
    • 我不知道,对我来说它似乎根本不起作用。仅使用r'^(?P&lt;slug&gt;.*)$' 捕获主视图,即使链接不包含更多内容。管理的更多链接与r'^manage$' 一起使用,并且仅当它位于 URL 之上时。但是manage/... 没有。最后 django 仍然试图抓住 /shop :(
    猜你喜欢
    • 1970-01-01
    • 2011-06-05
    • 2019-04-05
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多