我的网页如下所示:
当我按下“提交”按钮时,页面被“重定向”到其他页面。如果我未在get_absolute_url
中指定models.py
方法,则会收到ImproperlyConfigured
错误。如果我在models.py中设置了重定向到的位置,则单击“提交”按钮后,它将定向到该页面。我不明白的是,仅“提交”按钮如何重定向到我在models.py上设置的任何链接?为什么单击侧栏上的链接不能重定向到它?
为什么get_absolute_url方法仅在单击“提交”按钮时起作用,而在其他按钮上却不起作用?
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__'
答案 0 :(得分:1)
默认情况下,CreateView
类从success_url
继承FormMixin
属性,它将从模型获取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
答案 1 :(得分:0)
我目前也在学习 Django,并在我自己问这个问题时发现了这个问题。我做了一些进一步阅读,并认为这是您问题的答案:
请注意,在您的视图中,您继承自 CreateView
。现在,当此视图运行时,即当您提交表单时,有两种可能性:成功提交或错误。如果是前者,那么您需要知道提交后指向何处。在本例中,它是变量 get_absolute_url
,您可以将其设置为您喜欢的任何 url。因此,当您成功提交表单时,您将被带到此 url。
否则,如果您尝试提交表单时出现错误,您将一直停留在表单页面,直到提交成功。
我认为这解释了 get_absolute_url
的作用以及为什么页面上的其他链接不会将您带到此网址。