Django文档as_view在基于类的视图中指定方法
as_view()类方法创建类的实例并调用其dispatch()方法.
我试图打印实例.例如:
# urls.py
from django.conf.urls import url
from myapp.views import MyView
urlpatterns = [
url(r'^about/$', MyView.as_view()),
]
#views.py
from django.http import HttpResponse
from django.views import View
class MyView(View):
def get(self, request):
# <view logic>
return HttpResponse('result')
Run Code Online (Sandbox Code Playgroud)
我添加了print一份声明views.py:
class MyView(View):
print(self)
def get(self, request):
# <view logic>
return HttpResponse('result')
Run Code Online (Sandbox Code Playgroud)
它报道NameError.
如何打印"View"类创建的实例?
您可以使用视图__repr__或__str__方法(默认情况下,这些方法由每个python类继承).有两种选择:
__repr__每次调用REST方法时,获取表示(你得到它吗?:D):
class MyView(View):
def get(self, request):
# <view logic>
print(self.__repr__())
return HttpResponse(result)
Run Code Online (Sandbox Code Playgroud)
或者将其归还HttpResponse:
class MyView(View):
def get(self, request):
# <view logic>
result['self_repr'] = self.__repr__()
return HttpResponse(result)
Run Code Online (Sandbox Code Playgroud)每次实例化时获取类的表示:
class MyView(View):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
print(self.__repr__())
Run Code Online (Sandbox Code Playgroud)最终的结果虽然如下:
<my_app.views.MyView object at 0x7f63b5e05668>
Run Code Online (Sandbox Code Playgroud)
这不是很有帮助.您可以覆盖该__str__()方法以返回更具体的内容,但这取决于您!
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |