首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django - get_absolute_url是如何工作的?

Django - get_absolute_url是如何工作的?
EN

Stack Overflow用户
提问于 2018-07-19 05:35:22
回答 2查看 849关注 0票数 0

我的网页如下所示:

当我按下“提交”按钮时,页面被“重定向”到某个不同的页面。如果我没有在我的models.py中指定get_absolute_url方法,我会得到ImproperlyConfigured错误。如果我在models.py中设置了重定向到的位置,那么在单击Submit按钮时,它将被定向到该页面。我不明白的是,为什么只有提交按钮才能重定向到我在models.py上设置的链接?为什么单击侧边栏上的链接不会重定向到它?

为什么get_absolute_url方法只在单击Submit按钮时起作用,而不在其他按钮时起作用?

practice_add_well.html

代码语言:javascript
复制
<!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

代码语言:javascript
复制
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

代码语言:javascript
复制
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__'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-19 06:08:41

CreateView类从FormMixin继承success_url属性。默认情况下,它将从模型中获取url

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2021-01-16 00:10:27

我目前也在学习Django,当我自己问这个问题时,我发现了这个问题。我做了一些进一步的阅读,我认为这是你问题的答案:

请注意,在视图中,您是从CreateView继承的。现在,当运行此视图时,即当您提交表单时,有两种可能性:成功提交或错误。如果是前者,那么你需要知道在提交之后应该指向哪里。在本例中,它是变量get_absolute_url,您可以将其设置为您喜欢的任何url。因此,当您成功提交表单时,您将转到此url。否则,如果在尝试提交表单时出现错误,您将一直停留在表单页面上,直到成功提交。

我想这解释了get_absolute_url的作用,以及为什么页面上的其他链接不会把你带到这个url。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51411302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档