无法为Django项目添加新页面?求助解决urls配置问题
问题分析与解决
你的核心问题是错误地把视图函数传给了include()。include()的作用是导入其他URL配置模块(比如应用级的urls.py),不是直接绑定视图函数。你直接传views.hello,Django会把它当成一个URLconf模块去查找urlpatterns,自然找不到,所以抛出了那个错误。
下面给两种可行的解决方法:
方法一:直接绑定视图(最简单,适合单个视图场景)
修改项目根目录的urls.py,去掉多余的include(),直接把视图函数作为re_path的第二个参数:
from django.contrib import admin from django.urls import path, re_path from myapp import views urlpatterns = [ path('admin/', admin.site.urls), re_path(r'^hello/$', views.hello), # 去掉include,直接传入视图函数 ]
方法二:使用应用级URL配置(规范做法,适合多视图场景)
- 在
myapp目录下新建urls.py文件,写入以下内容:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^hello/$', views.hello), ]
- 修改项目根目录的
urls.py,用include()导入应用的URL配置:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('myapp.urls')), # 导入myapp的urls模块 ]
额外说明:如果你的Django版本是2.0及以上,多数场景用path()就足够,只有需要正则匹配复杂路径时才用re_path()(它是旧版url()的别名)。比如这个hello路径,用path('hello/', views.hello)完全可以替代re_path(r'^hello/$', views.hello)。
内容的提问来源于stack exchange,提问作者Alyssa
相关产品推荐
相关产品推荐

