from django.http import HttpResponseNotFound
def your_view(request, code):
try:
code = int(self.kwargs['code']) # cast to integer
except ValueError:
return HttpResponseNotFound(
"'code' must be convertible to an integer.")
型 基于类的视图(CBV)示例:
from django.http import HttpResponseNotFound
from django.views.generic import TemplateView
class CodeView(TemplateView):
def dispatch(self, request, *args, **kwargs):
try:
code = int(self.kwargs['code']) # cast to integer
except ValueError:
return HttpResponseNotFound(
"'code' must be convertible to an integer.")
return super().dispatch(request, *args, **kwargs)
2条答案
按热度按时间col17t5w1#
您可以编写自定义路径转换器:
字符串
在urls.py:
型
yizd12fk2#
我懒得做一个花哨的路径转换器,所以我只是将它捕获为一个字符串,并在视图中将其转换为一个整数(通过一些基本的健全性检查来确保值可以正确转换为整数):
urls.py
字符串
views.py(新增)
基于功能的视图(FBV)示例:
型
基于类的视图(CBV)示例:
型
如果你想让用户知道发生了客户端错误,你可以用
HttpResponseBadRequest
代替HttpResponseNotFound
,这将给予一个HTTP状态码400(Bad Request)。编辑:下面的版本会产生一个服务器错误HTTP响应代码,可能是不可取的(可能会出现在错误日志中等)
views.py(旧版本,由于历史原因留在此处)
型