Python 类型错误:';QueryDict&x27;对象不可调用

Python 类型错误:';QueryDict&x27;对象不可调用,python,django,sqlite,Python,Django,Sqlite,在这个django代码中,标题上的错误向我显示 views.py: from django.shortcuts import render from django.http import HttpResponseRedirect from .models import userdata def signinView(request) : all_users = userdata.objects.all() return render(request,'signin.html',

在这个django代码中,标题上的错误向我显示

views.py:

 from django.shortcuts import render
from django.http import HttpResponseRedirect
from .models import userdata
def signinView(request) :
    all_users = userdata.objects.all()
    return render(request,'signin.html',{'all_items':all_users})

def adduser(request) :
    c = request.POST('username')
    d = request.POST('password')
    new_item = userdata(username=c, password=d)
    new_item.save()
    return HttpResponseRedirect('/signin/')
URL.py:


from django.contrib import admin
from django.urls import path
from signin.views import signinView, adduser
urlpatterns = [
    path('admin/', admin.site.urls),
    path('signin/',signinView),

   path('adduser/',adduser)
]

signin.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

    <meta charset="UTF-8">
    <title>sign up</title>
</head>
<body>
<form class="form-inline" action="/adduser/" method="post"> {% csrf_token %}
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" name="userame">
    <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
  </div>
  <div class="form-group mx-sm-3 mb-2">
    <label for="inputPassword2" class="sr-only">Password</label>
    <input type="password" class="form-control" id="inputPassword2" placeholder="Password" name="password">
  </div>
  <button type="submit" class="btn btn-primary mb-2" value="add">sign up</button>
</form>
<!--<ul>
<li>
    <p>username password</p>
</li>
</ul>
-->
<ul>
    {% for user_data in all_items %}
    <li>{{ user_data.username}} : {{ user_data.password }}</li>
    {% endfor %}
</ul>
</body>
</html>

注册
{%csrf_令牌%}
电子邮件地址
我们永远不会与其他人共享您的电子邮件。
密码
注册
    {所有_项中的用户_数据%}
  • {{user\u data.username}}:{{{user\u data.password}}
  • {%endfor%}
我应该做什么来修复错误?
应用程序应该在屏幕上打印用户名和密码,并让用户添加用户名和密码。我从Django开始,我很高兴得到帮助。我正在尝试写足够多的内容来发送帖子,同样,我需要此帮助,但目前还不重要。

您应该替换
c=request.post('username'))
带有:

c = request.POST.get('username') # with this option c will be set to None automatically if username key is not present in post request


下一行也是如此;正如
QueryDict
一样,它是一个类似字典的对象(因此不可调用)

您可以共享stacktrace吗?但随后它显示:NOTNULL约束失败:signin_userdata.UserNames,如
c
(应该包含
用户名
)是空的。您的模板中是否有
?并发送
POST
请求?模板中的何处?请添加模板代码以便我们可以找到问题。我添加了模板
c = request.POST['username'] # if username is not present in the post this will throw an KeyError