【问题标题】:Where is the data created from my form going?从我的表单创建的数据在哪里?
【发布时间】:2016-02-28 00:32:35
【问题描述】:

我刚刚创建了第一次表单,对流程和数据的去向有一些疑问。

这是我的模型、视图、表单、url 和模板文件;

models.py 中的模型:

class Member(models.Model):
    member_id = models.SlugField(max_length=10)
    name = models.CharField(max_length=200)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
    mobile = models.SlugField(max_length=20)
    income = models.CharField(max_length=200, choices=INCOME_CHOICES)
    education = models.CharField(max_length=200, choices=EDUCATION_CHOICES)
    home_district = models.CharField(max_length=200, choices=DISTRICT_CHOICES)
    family_spending = models.CharField(max_length=200, choices=FAMILY_SPENDING_CHOICES)
    children_spending = models.CharField(max_length=200, choices=CHILDREN_SPENDING_CHOICES)   
    birth_date = models.DateTimeField('Birthday', blank=True)
    comments = models.CharField(max_length=300, blank=True)
    def __str__(self):
         return self.name

views.py:

def create_a_member_form(request):
  if request.method == 'POST':
    form = MemberForm(request.POST)
    if form is valid():
      member_form = form.save()
      return HttpResponseRedirect('/complete/')
  else:
    form = MemberForm()
  return render(request, 'member_form.html', {'form': form})

forms.py:

from .models import Member
from django import forms 

class MemberForm(forms.ModelForm):
    class Meta:
        model = Member
        fields = '__all__'

urls.py:

urlpatterns = [ 
    url(r'^member_form/$', views.create_a_member_form, name='member_form')
]

模板(member_form.html):

{% load staticfiles %}

<form action="/admin/" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit" />
</form>

我想知道:

  • 模板中&lt;form action="/admin/" method="post"&gt;中的/admin/代表什么?这是我点击“提交”后页面重定向到的地方,对吧?

  • urls.py 中的name='member_form' 是否表示 URL 将匹配的 HTML 模板的名称,在这种情况下为 member_form.html?

  • 从表单创建的数据去哪儿了?我尝试使用表单创建成员对象,但新对象没有显示在我的管理站点中的成员下(而现有对象显示)。如何确保从此表单创建的对象确实显示在我的管理站点中的成员下?

谢谢。

【问题讨论】:

    标签: python html django forms


    【解决方案1】:
    1. 是的。
    2. 不,如果您想生成指向该 URL 的链接,它是您在 {% url %} 标记中使用的名称。模板由视图本身决定(render(request, 'member_form.html',...))。
    3. 它不会去任何地方,因为您的视图发布到 /admin/ 而不是 /member_form/; /admin/ 是管理站点的索引,它没有实际接受您的表单数据的代码。

    请注意,1 是基本的 HTML,2 和 3 是教程中介绍的基本 Django 概念;你应该去读一读。

    【讨论】:

    • 感谢您的回复。你是什​​么意思我的观点是发布到 /admin/ 而不是 /member_form/?
    • 我不确定这是怎么回事。正如您自己在第 1 点中所说,action 属性表示表单将数据提交到的位置。您需要这样做,以便表单将数据发送到期望它的视图,而不是其他一些随机 URL。
    • 我所说的“重定向”不是指数据的去向,而是在“提交”之后页面刷新到的位置。但我现在明白你的意思了。
    • 同样,之后发生的事情由视图控制,当您执行 return HttpResponseRedirect 时。
    • 我在模板中将 /admin/ 更改为 /member_form/,但是当我单击“提交”时,即使我已经映射了 url(r'^member_form/$',我也会收到一个找不到页面的错误, views.create_a_member_form, name='member_form') in urls.py :/
    猜你喜欢
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2023-03-07
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2011-06-02
    相关资源
    最近更新 更多