我的代码很奇怪,我不明白为什么。
这里是代码:
from django.urls import path
app_name = 'portal'
urlpatterns = []
def route(url, name=""):
def dec(f):
urlpatterns.append(
path(url, f, name=f.__name__)
)
return f
return dec
from . import views
# 2) The decorator call in the other file
from . import urls
@urls.route("/my_function")
def my_function():
print("Hello world")
我在UnboundLocalError
上得到一个name
File "urls.py", line 10, in dec
if name == "":
UnboundLocalError: local variable 'name' referenced before assignment
name
应该默认设置为""
,我不知道问题出在哪里。奇怪的是,如果我运行相同的代码并将装饰器更改为:
urlpatterns = []
def route(url, name=""):
def dec(f):
if name == "":
print("I work!")
urlpatterns.append(
path(url, f, name=name)
)
return f
return dec
它可以正常工作并输出:
I work !
当问题应该来自if name == ""
行时>
PS:我正在django上编程,此行在urls.py
文件中。
我的代码很奇怪,我不明白为什么。这是代码:从django.urls导入路径app_name ='portal'urlpatterns = [] def route(url,name =“”):def dec(f):urlpatterns ....
答案是您未发布的部分。您的真实代码实际上看起来像