我是Django的新手并使用1.9.8版本。我按照官方教程,现在我正在尝试this更高级的教程。我在“注册用户”部分的结束/检查点。当我访问http://localhost:8000/register
时,Django会在位于authentication/templates/authentication.html
的index.html页面上显示我所拥有的内容,而不是在static/templates/authentication/register.html
的教程中创建的内容。
当我最初到达目的地时,我收到以下错误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
然后我在我的views.py
中添加了一个IndexView类# 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
的模板?我很困惑,主要是因为在教程期间没有在视图中定义名为'register'的方法,也没有在urls.py文件中指定。
由于
答案 0 :(得分:1)
url('^.*$', IndexView.as_view(), name='index'),
.*
中的 '^.*$'
,告诉任何网址将转到此IndexView
和
你没有为url.py
中的注册页面添加网址url(r'^register/',views.yourview,name='givenameforthisurl')