从我的表单创建的数据在哪里?

时间:2015-11-25 09:27:48

标签: python html django forms

我刚刚第一次创建了一个表单,并对该过程和数据的位置有一些疑问。

以下是我的模型,视图,表单,网址和模板文件;

来自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>

我想知道:

  • 在模板中,{admin / in <form action="/admin/" method="post">代表什么?这是我点击“提交”后页面重定向到的地方,对吗?

  • urls.py中的name='member_form'是否代表网址与之匹配的HTML模板的名称,在这种情况下是member_form.html?

  • 从表单创建的数据在哪里?我已尝试使用表单创建成员对象,但新对象不会显示在我的管理站点下的成员下(现有成员)。如何确保从此表单创建的对象确实显示在我的Admin站点下的Members下?

谢谢。

1 个答案:

答案 0 :(得分:3)

  1. 不,如果您要生成指向该网址的链接,则它是您在{% url %}代码中使用的名称。模板由视图本身决定(在render(request, 'member_form.html',...)中)。
  2. 它不会去任何地方,因为您的视图发布到/ admin /而不是/ member_form /; / admin /是管理站点的索引,它没有代码可以实际接受您的表单数据。
  3. 请注意,1是基本HTML,2和3是本教程中介绍的基本Django概念;你应该去看看。