首页 > 解决方案 > 如何在django中获取http响应代码wrt一个url?

问题描述

我需要根据关于 url 的响应代码在模板文件中应用 if 语句。由于我不知道任何直接方法,我打算制作一个自定义模板标签,例如:

from django import template

register = template.Library()

@register.filter(name='code')
def code(url):
    a = http.response(url)
    return a

然后我将在模板中将其称为:

{% if model.fileurl|code==200 %}
<div>..............</div>

此外,当我试图填补我们的 django 开发人员的鞋子时,有什么方法可以直接在模板中完成。

标签: pythondjangodjango-templates

解决方案


您可以制作一个返回状态码的模板标签:

# app/templatetags/code.py

from django import template
from requests import get as reqget

register = template.Library()

@register.filter(name='code')
def code(url):
    reqget(url).status_code

app/templatetags/目录还需要包含一个__init__.py文件(如果还没有,您可以添加一个空文件)。

然后在模板中:

{% load code %}
{% if model.fileurl|code == 200 %}
<div>..............</div>
{% endif %}

推荐阅读