首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django不接受来自html POST表单的输入。

Django不接受来自html POST表单的输入。
EN

Stack Overflow用户
提问于 2015-11-16 22:56:27
回答 2查看 3.8K关注 0票数 0

我有这个html表单:

代码语言:javascript
复制
<form method="post" action="">
    {% csrf_token %}
        <div class="inputText">
            <input type="text" name="username" placeholder="Username" value = required />
            <br><br>
            <input type="email" name="email" placeholder="Email" required />
            <br><br>
            <input type="password" name="pass1" id="pass1" placeholder="Password" required />
            <br><br>
            <input type="password" name="pass2" id="pass2" onkeyup="checkPass(); return false;" placeholder="Confirm Password" required />
            <br><br>
            <span id="confirmMessage" class="confirmMessage"></span>
        </div>
        <div class="send">
            <input type="submit" name="register" value="Register" class="register" />
        </div>

这是我的forms.py:

代码语言:javascript
复制
class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('username', 'email', 'password')

我的观点是

代码语言:javascript
复制
def register(request):
if request.method == "POST":
    form = UserForm(request.POST)
    if form.is_valid():
        form.save
        new_user = authenticate(username=request.POST['username'], password =request.POST['password'])
        login(request.new_user)
        return HttpResponseRedirect(request, '/index')
else:
    form = UserForm()
return render(request, 'authen/register.html', {'form': form})

这应该是一个寄存器系统,但是当我按register时,它会重新加载寄存器页,但什么也不会发生。当我转到django admin时,我没有看到新用户,所以django没有从表单域接受输入。

EN

回答 2

Stack Overflow用户

发布于 2015-11-16 22:58:23

该表单可能无效,但您没有在模板中显示任何错误。至少在某个地方执行{{ form.errors }},尽管实际上您应该直接从Django表单中输出所有字段及其错误:

代码语言:javascript
复制
{{ form.username }}
{{ form.username.errors }}

等。

还要注意,实际上并没有在is_valid块中调用save方法。您需要做的是:

代码语言:javascript
复制
form.save()
票数 3
EN

Stack Overflow用户

发布于 2018-07-06 08:06:10

一定要通过输入元素的name属性来输入get。这是因为request.POST['keyword']引用由指定的html name属性keyword标识的元素。

下面是一个例子:

<form action="/login/" method="POST"> <input type="text" name="keyword" placeholder="Search query"> <input type="number" name="results" placeholder="Number of results"> </form>

在Python文件中,获取输入元素的值,request.POST['keyword']request.POST['results']将分别包含keywordresults的值。

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

https://stackoverflow.com/questions/33738273

复制
相关文章

相似问题

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