Django自定义模板表单和{{next}}

时间:2017-11-01 18:18:02

标签: django django-templates django-registration

我坚持创建表单,看起来像{{ forms.as_p }}。 我需要使用此表单登录网站。使用forms.as_p它一切都很完美,但我需要创建自己的自定义表单。

问题是,在阅读了很多网站和文档后,我仍然无法理解,如何使用我的css类和输入字段创建自定义表单。

我试过这个:

action="", method ="post"
                     <div class="form-group">
                            <input type="text" class="form-control" placeholder="Username"  required="">
                        </div>
                        <div class="form-group">
                            <input type="password" class="form-control" placeholder="Password" required="">
                        </div>
<input type="submit" class="btn btn-primary block full-width m-b" value="Log In" />

但它不起作用。 哪些领域,我错过了。

我还有另一个问题:是否可以定制&#34; next&#34;登录我的自定义页面后重定向的变量?我怎么做呢?

1 个答案:

答案 0 :(得分:0)

通常,您使用forms.py创建一个表单,您可以通过Jinja在HTML代码中使用该表单。

您的 forms.py 可能如下所示:

from django import forms

class ProfileForm(forms.Form):
    name = forms.CharField(label='Your name', max_length=100)
    age = forms.IntegerField(label='Your age')

然后你会做一些清理,以确保传递给表单的数据格式正确。

def clean_name(self):
    name = self.cleaned_data.get('name')
    if not name:
        raise forms.ValidationError('You have to type in a name.')
    return name

views.py

def some_view(request):
      form = ProfileForm(request.POST or None)

      if form.is_valid():
            name = form.cleaned_data.get('name')
            //do something with the name
            user = User.objects.get(username=username)
            user.username = name
            user.save()
            return redirect('to_profile_of_user')
      return render(request, 'change_profile.html', {'form':form})

将表单传递给模板(HTML)非常重要。

您的 change_profile.html

<form action="" method="POST" enctype="multipart/form-data">
  {{form.as_p}} //That is the form you passed
  <input type="submit" value="Change" />
</form>

我希望我的回答能给你一些建议。现在你已经看到了完整的往返。也许你应该仔细看看Django documentation。这非常有帮助。

代码是动态编写的,未经过测试。但这足以概述。你不应该忘记导入你需要的东西。我没有这样做。