Я новичок в Django и использую версию 1.9.8. Я последовал официальному учебнику, и теперь я пытаюсь сделать более this. Я нахожусь в конце/контрольной точке раздела «Регистрация пользователей». Когда я нахожусь http://localhost:8000/register
, Django отображает содержимое, которое у меня есть на моей странице index.html, расположенную по адресу authentication/templates/authentication.html
, а не тот, который был создан во время учебника по адресу static/templates/authentication/register.html
.Проблема с Django urls
Когда я сначала попал туда, где я, я получаю следующее сообщение об ошибке ImportError: cannot import name 'IndexView'
, ссылаясь на urls.py
#urls.py
from django.conf.urls import include,url
from django.contrib import admin
from django.conf.urls import patterns
from rest_framework_nested import routers
from authentication.views import AccountViewSet
router = routers.SimpleRouter()
router.register(r'accounts', AccountViewSet)
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api/v1/', include(router.urls)),
url('^.*$', IndexView.as_view(), name='index'), #this line was causing the error
]
я наткнулся на this post от кого-то, кто следовал один и тот же учебник. Я добавил импорт IndexView к моему urls.py как таковой
from authentication.views import AccountViewSet, IndexView
А потом я добавил класс IndexView к моему views.py
# authentication/views.py
....
class IndexView(TemplateView):
template_name = 'mytestproject/index.html' #this page is showing when I visit http://localhost:8000/register rather than the one located at static/templates/authentication/register.html
Ошибка IndexView ушел и сервер работал без ошибок, но когда я посетил http://localhost:8000/register
, ничего не показывалось. Я открыл эту страницу index.html и добавил контент, а затем отобразил это содержимое. Django явно использует индексный файл, расположенный по адресу authentication/templates/authentication.html
вместо созданной мной страницы регистрации. Как заставить Django использовать шаблон, расположенный по адресу static/templates/authentication/register.html
, когда я нахожусь в регистровом URL-адресе? Я смущен, главным образом потому, что в представлении во время учебника не были определены методы с именем «register» и не указаны в файле urls.py.
Благодаря
Это та часть, с которой я смущен. Что касается учебника, в view.py не было создано никаких «регистровых» методов. Какое представление и имя я указываю на этот URL? Единственное, что связано с созданным мной регистром, это шаблон, расположенный в 'static/templates/authentication/register.html'. Означает ли это, что в учебнике отсутствует контент, или есть что-то, что я не понимаю? Возможно, они полагаются на маршрутизацию углов для доступа к этому шаблону? В конце концов, он был помещен в статическую папку. – user1852176
да, вам нужно написать функцию просмотра, чтобы отобразить страницу, или если вы используете встроенные представления django, вам просто нужно импортировать эти пакеты в url.py, [см. Этот пример для встроенных «представлений проверки подлинности»] (https: // docs .djangoproject.com/о/1,9/темы/авт/по умолчанию/# модульно-django.contrib.auth.views) – masternone