我在app中有网址,当我去文章报告网址时,我看到了django错误页面 使用文章的网址,但文章报告没有网址。
main.urls.py
from rest_framework import routers
from main.views import (ArticleViewSet)
from django.views.generic import TemplateView
router = routers.DefaultRouter()
router.register(r'article-report', TemplateView.as_view(template_name = 'report.html'),'report')
router.register(r'article', ArticleViewSet)
urlpatterns = router.urls
settings.py
的一部分TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
终端收到消息
[26/Jul/2017 14:22:14] "GET /article-report HTTP/1.1" 404 5777
P.S。 Pycharm在导入行中强调django,TemplateView和rest_framework。 但在其他例子中它并不重要
答案 0 :(得分:3)
您应该将TemplateView
作为url()
添加到urlpatterns
,而不是尝试将其注册到路由器。
router = routers.DefaultRouter()
router.register(r'article', ArticleViewSet)
urlpatterns = [
url(r'article-report', TemplateView.as_view(template_name='report.html'), name='report') # note kwarg name='report' instead of arg 'report'
]
urlpatterns += router.urls
答案 1 :(得分:1)
在您的settings.py文件中,确保report.html
中添加了TEMPLATES -> DIRS
的路径。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'quiz.templates')
# your path instead of this ^
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
答案 2 :(得分:1)
你的模板DIR是空的......
在init DIR path
my_app->
my_app
static
templates->
report.html
manage.py
同时使用确保您的网址使用它, name =' report'
<强> urls.py 强>
url(r'article_report', TemplateView.as_view(template_name = 'report.html'), name='report')
<强> settings.py 强>
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'your_app.templates')
],
'APP_DIRS': True,
'OPTIONS': {
'debug': DEBUG,
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'production_app.context.bot_context_processor'
],
},
},
]
答案 3 :(得分:-1)
.
├── djangooo
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── templates
└── report.html
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
'templates', # if you use templates folder, you add this.
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]