我有一个基于类的自定义视图:
class GreetingView(View):
greeting = "Good Day"
def get(self,request):
return HttpResponse(self.greeting)
class MorningGreetingView(GreetingView):
greeting = "Morning to ya"
我的urls.py设置如下:
urlpatterns = [
url(r'greeting/',GreetingView.as_view(greeting="G'day")),
#override that in a subclass
url(r'subgreeting/',MorningGreetingView.as_view()),
#TODO (is a bug ? why I set the argument for the parent.as_view
#method ,is effetive to subclass ...
] 当我去127.0.0.1:8000/subgreeting/时,它会告诉我“G'day”那应该是“Morning to ya”!有人能帮我吗 ? 先感谢您!
答案 0 :(得分:0)
这里的问题在于您使用的网址正则表达式。他们应该是
url(r'^greeting/$', GreetingView.as_view(greeting="G'day")),
url(r'^subgreeting/$', MorningGreetingView.as_view()),
注意^
和$
,它们标记了startwith和endwith的正则表达式。
没有这两个,字符串' subgreeting'总是匹配正则表达式问候'作为问候'是'subgreeting'中的子字符串。这就是调用第一个url的原因。