簡體   English   中英

django_hosts - NoReverseMatch:未找到“家”的反轉。 “home”不是有效的視圖函數或模式名稱

[英]django_hosts - NoReverseMatch: Reverse for 'home' not found. 'home' is not a valid view function or pattern name

版本:
 Django 2.2.10 django-hosts 4.0

我已經按照本文檔成功安裝了 django_hosts。

我現在可以成功訪問https://blog.mysite.com 之類的頁面

然而,頁面上的URL正確地解析。 我遵循了django_hosts 官方文檔中顯示的示例。

這是我的設置的樣子:

我的網站/urls.py

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

from .views import HomePageView, AboutView, TermsView, PrivacyView, \
                    sample, register, signin

app_name = 'home'

urlpatterns = [
    path('', HomePageView.as_view(), name='index'),
    path('about', AboutView.as_view(), name='about'),
    path('terms', TermsView.as_view(), name='terms'),
    path('privacy', PrivacyView.as_view(), name='privacy'),

    path('sample', sample),    
    path('register', register, name='register'),
    path('signin', signin, name='signin'),
]

主頁/urls.py

                    <div class="container">
116                     <!-- Logo -->
117                     <a class="logo" href="{% host_url 'home' host 'www' %}" style="text-decoration: none; font-size: 250%;">
118                         <img src="/static/assets/img/logo.png">
119                         My Site
120                     </a>                    
121                     <!-- End Logo -->

博客/模板/index.html

 <div class="container"> 116 <!-- Logo --> 117 <a class="logo" href="{% host_url 'home' host 'www' %}" style="text-decoration: none; font-size: 250%;"> 118 <img src="/static/assets/img/logo.png"> 119 My Site 120 </a> 121 <!-- End Logo -->

[[ 編輯 ]]

實際演示上傳到github

下面我是如何設法解決這個問題的

. mysite

  .. blog  # Blog app
     .. __init__.py
     .. urls.py

  .. home  # Home app
     .. __init__.py
     .. urls.py


  .. mysite

     .. urls
        .. __init__.py
        .. blog.py
        .. home.py

     .. settings.py

     .. hosts.py

mysite/settings.py

[..]

ALLOWED_HOSTS = [
              'mysite.com',
         'blog.mysite.com',
]

[..]


MIDDLEWARE = [
    'django_hosts.middleware.HostsRequestMiddleware',  # django hosts

    [..]

    'django_hosts.middleware.HostsResponseMiddleware',  # django hosts
]

ROOT_URLCONF = 'mysite.urls.home'

# django-hosts
# https://django-hosts.readthedocs.io/en/latest/#settings

ROOT_HOSTCONF = 'mysite.hosts'

DEFAULT_HOST = 'www'  # HERE see hosts.py

PARENT_HOST = 'mysite.com'

# HOST_SCHEME = 'http'

# HOST_PORT = 8000

# HOST_SITE_TIMEOUT = 3600

[..]

mysite/hosts.py

from django.conf import settings

from django_hosts import patterns, host


host_patterns = patterns('',

    # mysite.com
    host(r'^$', 'settings.ROOT_URLCONF', name='www'),  # see 'settings.py'

    # blog.mysite.com
    host(r'blog', 'mysite.urls.blog', name='blog'),
)

mysite/urls/home.py

from django.conf import settings
from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('',       include('home.urls', namespace='home')),

    path('admin/', admin.site.urls),  # Admin Area
]

[..]

mysite/urls/blog.py

from django.urls import path, include


urlpatterns = [
    path('', include('apps.blog.urls', namespace='blog')),

]

[..]

blog/templates/index.html

<div class="container">
    <!-- Logo -->
    
     <!-- HERE you don't need to specify host 'www' since it defaults to 'www' see settings.py -->
    <a class="logo" href="{% url 'home:index' %}" style="text-decoration: none; font-size: 250%;">
        <img src="/static/assets/img/logo.png">
        My Site
    </a>
    <!-- End Logo -->

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM