这是来自的类代码views.py:
class Ask(CreateView):
template_name = 'f/ask.html'
form_class = QuestionForm
success_url = '/f/ask/'
def get_context_data(self, **kwargs):
content = super().get_context_data(**kwargs)
return content
Run Code Online (Sandbox Code Playgroud)
这是我的 urls.py 代码
from django.urls import path, register_converter
from . import views, converter
register_converter(converter.HexConverter, 'hex')
urlpatterns = [
path('', views.QuestionView),
path('ask/', views.Ask),
path('<hex:pk>/', views.QuestionCurrent, name='question_current'),
]
Run Code Online (Sandbox Code Playgroud)
它说__init__() takes 1 positional argument but 2 were given,但是我从书中取的代码,所以我不认为它是错误的或什么的。
添加.as_view()到您的路径中urls.py (因为它们是class基于路径):
从:
from django.urls import path, register_converter
from . import views, converter
register_converter(converter.HexConverter, 'hex')
urlpatterns = [
path('', views.QuestionView),
path('ask/', views.Ask),
path('<hex:pk>/', views.QuestionCurrent, name='question_current'),
]
Run Code Online (Sandbox Code Playgroud)
到:
from django.urls import path, register_converter
from . import views, converter
register_converter(converter.HexConverter, 'hex')
urlpatterns = [
path('', views.QuestionView.as_view()),
path('ask/', views.Ask.as_view()),
path('<hex:pk>/', views.QuestionCurrent.as_view(), name='question_current'),
]
Run Code Online (Sandbox Code Playgroud)
从文档:
classmethod as_view(**initkwargs)返回一个接受请求并返回响应的可调用视图:
response = MyView.as_view()(request)返回的视图具有 view_class 和
view_initkwargs属性。在请求/响应周期中调用视图时,该
setup()方法会将 分配HttpRequest给视图的请求属性,并将从 URL 模式捕获的任何位置和/或关键字参数分别分配给 args 和 kwargs 属性。然后dispatch()被调用。
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |