我的网页如下所示:
当我按下“提交”按钮时,页面被“重定向”到某个不同的页面。如果我没有在我的models.py
中指定get_absolute_url
方法,我会得到ImproperlyConfigured
错误。如果我在models.py中设置了重定向到的位置,那么在单击Submit按钮时,它将被定向到该页面。我不明白的是,为什么只有提交按钮才能重定向到我在models.py上设置的链接?为什么单击侧边栏上的链接不会重定向到它?
为什么get_absolute_url方法只在单击Submit按钮时起作用,而不在其他按钮时起作用?
practice_add_well.html
<!DOCTYPE html>
{% extends "base.html" %}
{% block content %}
<h1>Test Page for BHA</h1>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" class='btn btn-primary' value="Submit">
</form>
{% endblock %}
models.py
from django.db import models
from django.urls import reverse
class WellInfo(models.Model):
name = models.CharField(max_length=100)
region_location = models.CharField(max_length=100)
spud_date = models.CharField(max_length=100)
well_bore = models.CharField(max_length=100)
rig_name = models.CharField(max_length=100)
status = models.CharField(max_length=100)
def get_absolute_url(self):
return reverse(# some link....)
views.py
from django.shortcuts import render
from django.views.generic import View, TemplateView, ListView, DetailView, CreateView, UpdateView, DeleteView
from . import models
class WellInfoCreateView(CreateView):
template_name = 'practice_add_well.html'
context_object_name = 'bha_inputs'
model = models.WellInfo
fields = '__all__'
发布于 2018-07-19 06:08:41
CreateView
类从FormMixin
继承success_url
属性。默认情况下,它将从模型中获取url
class WellInfoCreateView(CreateView):
template_name = 'practice_add_well.html'
context_object_name = 'bha_inputs'
model = models.WellInfo
fields = '__all__'
success_url = 'url'
有关详细信息,请参阅class-based-views
发布于 2021-01-16 00:10:27
我目前也在学习Django,当我自己问这个问题时,我发现了这个问题。我做了一些进一步的阅读,我认为这是你问题的答案:
请注意,在视图中,您是从CreateView
继承的。现在,当运行此视图时,即当您提交表单时,有两种可能性:成功提交或错误。如果是前者,那么你需要知道在提交之后应该指向哪里。在本例中,它是变量get_absolute_url
,您可以将其设置为您喜欢的任何url。因此,当您成功提交表单时,您将转到此url。否则,如果在尝试提交表单时出现错误,您将一直停留在表单页面上,直到成功提交。
我想这解释了get_absolute_url
的作用,以及为什么页面上的其他链接不会把你带到这个url。
https://stackoverflow.com/questions/51411302
复制相似问题