【问题标题】:Different URL config depending on domain in Django不同的 URL 配置取决于 Django 中的域
【发布时间】:2016-06-07 14:44:39
【问题描述】:

在 Mezzanine 中,您可以使用两个不同的 URL,具体取决于您要显示的内容。有没有办法检查 inside urls.py 活动域是在子域上还是只是“常规”域?

这是两种不同的风格:

url('^$', direct_to_template, {'template': 'index.html'}, name='home'),
url('^$', mezzanine.blog.views.blog_post_list, name='home'),

我还没有找到可靠的方法。如果我在子域(通配符/例如 sub.example.com)上,我想显示 blog_post_list,如果我在“主”域(例如 example.com)上,我想显示 index.html

【问题讨论】:

    标签: django mezzanine


    【解决方案1】:

    不,urls.py 在您的应用启动时加载,并且只查看路径。当前 URL 是中间件和视图接收的 request 对象的一部分。

    但是,您可以根据 URL 路径使用视图来委派请求。

    url('^$', my_view, name='home')
    

    并且视图可以使用当前的request 对象委托给两个后续视图之一。

    def my_view(request):
        if 'something' in request.META['HTTP_HOST']:
            return something_view(request)
        else:
            return another_view(request)
    

    但是,有一个应用程序可以做你想做的事,django-hosts。它允许根据主机加载不同的urls.py文件。

    from django_hosts import patterns, host
    
    host_patterns = patterns('path.to',
        host(r'api', 'api.urls', name='api'),
        host(r'beta', 'beta.urls', name='beta'),
    )
    

    【讨论】:

      猜你喜欢
      • 2018-03-26
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 2016-08-31
      • 2015-09-22
      • 2020-01-24
      • 2011-03-06
      相关资源
      最近更新 更多