我为日志创建了一个模型:
class LogBook(models.Model):
token = models.CharField(max_length=500, blank=True, null=True)
class LogMessage(models.Model):
logbook = models.ForeignKey(
LogBook, on_delete=models.CASCADE, related_name="logmessages")
message = models.CharField()
我的观点
def logmessage_delete(request, logmessage_id, log_id, token):
log = get_object_or_404(LogBook, token=token, pk=log_id)
logmessages = LogMessage.objects.filter(logbook=log, message=logmessage_id)
logmessages.delete()
网址
delete/<int:logmessage_id>/<int:log_id>/<str:token>
在我的模板中,我尝试过:
{% url 'log-delete' logmessage_id log_id token %}
我没有反向匹配,但是如果我尝试例如:http:// localhost:8000 / log / delete / 15/9/1,它就可以正常工作。
完全错误:
找不到带有参数'('',``,'')''的'log-delete'的反向。尝试了1个模式:['log / delete /(?P
[0-9] +)/(?P [0-9] +)/(?P [^ /] +) $']
有什么主意吗?
答案 0 :(得分:0)
请尝试这个
{% abs_url 'app_name:log-delete' request logmessage_id=logmessage_id log_id=log_id token=token %}
这里我们使用 abs_url (模板标记),而 app_name 是应用程序的名称。abs_url模板标记代码如下所示。此代码100%有效
from django import template
from django.urls import reverse
register = template.Library()
@register.simple_tag
def abs_url(value, request, **kwargs):
return reverse(value,kwargs=kwargs)