Django项目添加视图至urlpatterns时触发NameError错误求助
解决Django路由中
NameError: name 'index' is not defined的问题 嘿,我一眼就揪出问题所在啦!你遇到的NameError完全是因为路由里的name参数格式写错了,和你调整的path路径没关系~
错误原因
在你的urls.py里,这一行代码:
path('', views.index, name=index),
这里的name=index是错误的——name参数需要接收的是字符串类型的路由别名,但你直接写了index,Python会把它当成一个变量去查找,可你根本没定义过叫index的变量,自然就抛出NameError了。
修正后的代码
把name=index改成name='index'(加上单引号,变成字符串)就搞定了,完整的urls.py应该是这样:
from django.contrib import admin from django.urls import path from first_app import views urlpatterns = [ path('admin/', admin.site.urls), path('', views.index, name='index'), # 这里把index改成'index' ]
额外提醒(避免踩其他坑)
- 确保你已经在
project/settings.py的INSTALLED_APPS里注册了first_app,不然导入视图时会报错:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'first_app', # 别忘了加这一行 ] - 如果你想把路由改成
first_app路径(比如访问http://localhost:8000/first_app才触发视图),只需要修改path的第一个参数即可,同时保持name参数是字符串:path('first_app/', views.index, name='index'),
内容的提问来源于stack exchange,提问作者0xgareth
相关产品推荐
相关产品推荐

