【问题标题】:Django Apache SubdomainsDjango Apache 子域
【发布时间】:2015-12-18 02:08:42
【问题描述】:

我按照此参考链接 Multiple Sites in Django 的步骤操作并在 apache 中进行了配置。但是如何在模板中调用这些域是一回事

如果我直接在地址栏中输入域名,它就可以工作。但是想通过链接服务(<a href="">Domain1</a>)

如上所述,对于单独的 settings.py 和 wsgi.py。

我有两个单独的网址。

domain1_urls.py

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^$', 'domain1.views.domain1', name='domain1'),
)

domain2_urls.py

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^$', 'domain2.views.domain2', name='domain2'),
)

index.html

<li><a href="{% url 'domain1' %}">domain1</a></li>       
<li><a href="{% url 'domain2' %}">domain2</a></li>

登录页面是 domain1。在登录页面模板中,有一个 domain2 的链接。如果我单击它,它只是重定向到 domain1 本身。这对我不起作用,URL Domian1 和 Domain 2 服务器 '/' 如何在调用通用 index.html 上的模板时区分两者。

请告诉我我在这里犯了什么错误。如果有任何建议,请告诉我。提前致谢。

【问题讨论】:

    标签: python django apache subdomain


    【解决方案1】:

    你的两个 url 都指向同一个 root(/),所以尝试如下

    在 domain2_urls.py 中

    from django.conf.urls import patterns, include, url
    
    urlpatterns = patterns('',
        url(r'^domain2/$', 'domain2.views.domain2', name='domain2'),
    )
    

    【讨论】:

      【解决方案2】:

      创建 Django 站点框架是为了处理共享一个数据库的多个站点,也许还有其他一些事情,它不是为了处理跨多个域的一个站点而创建的。

      为了妥善处理它,我建议使用django-subdomains 包。它的创建是为了处理这种确切的情况。它包含 4 个主要内容:将检测您的子域的简单中间件,从先前继承的中间件,另外还可以基于子域交换 ROOT_URLCONF,新的反向函数将采用子域关键字参数并在正确的 urlpatterns 和新 @ 中查找 url 987654323@模板标签,将使用新的反向功能。

      【讨论】:

        【解决方案3】:

        我认为您需要更改应用程序的架构。在视图级别捕获域信息。 例如:

        from django.views.generic import View, TemplateView
        
        
        class DomainMixin(View):
            def get_template_names(self):
                return ['{domain}/{template_name}'.format(domain=self.current_domain, template_name=self.template_name)]
        
            def dispatch(self, request, *args, **kwargs):
                self.current_domain = request.META['HTTP_HOST']
                return super(DomainMixin, self).dispatch(request, *args, **kwargs)
        
        class IndexView(DomainMixin, TemplateView):
            template_name = 'my_app/index_view.html'
        
            def get_context_data(self, **kwargs):
                context = super(IndexView, self).get_context_data(**kwargs)
        
                ### domain specific logic ###
                if self.current_domain == '':
                    pass
        
                return context
        

        【讨论】:

          猜你喜欢
          • 2011-02-18
          • 2011-04-23
          • 2011-08-04
          • 2013-01-07
          • 2013-04-24
          • 2023-03-27
          • 1970-01-01
          • 2011-05-28
          • 2015-08-02
          相关资源
          最近更新 更多