2016-08-05 2 views
0

Я новичок в 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.

Благодаря

ответ

1
url('^.*$', IndexView.as_view(), name='index'), 

.* в '^.*$', сообщает любому URL будет идти к этому IndexView

и

вы did'nt добавить URL для страницы регистра в url.py

url(r'^register/',views.yourview,name='givenameforthisurl') 
+0

Это та часть, с которой я смущен. Что касается учебника, в view.py не было создано никаких «регистровых» методов. Какое представление и имя я указываю на этот URL? Единственное, что связано с созданным мной регистром, это шаблон, расположенный в 'static/templates/authentication/register.html'. Означает ли это, что в учебнике отсутствует контент, или есть что-то, что я не понимаю? Возможно, они полагаются на маршрутизацию углов для доступа к этому шаблону? В конце концов, он был помещен в статическую папку. – user1852176

+0

да, вам нужно написать функцию просмотра, чтобы отобразить страницу, или если вы используете встроенные представления django, вам просто нужно импортировать эти пакеты в url.py, [см. Этот пример для встроенных «представлений проверки подлинности»] (https: // docs .djangoproject.com/о/1,9/темы/авт/по умолчанию/# модульно-django.contrib.auth.views) – masternone