简体   繁体   English

NOT NULL约束失败:django和sqlite3中的SendMessage_users.UserName

[英]NOT NULL constraint failed: SendMessage_users.UserName in django and sqlite3

I am just started my django beginner tutorial and facing problem with inserting data into sq lite database. 我刚刚开始我的django初学者教程,并且面临将数据插入sq lite数据库的问题。 while loading the page AddUser it says; 在加载页面AddUser时说:

IntegrityError at /AddUser/ NOT NULL constraint failed: SendMessage_users.UserName / AddUser / NOT NULL约束处的IntegrityError失败:SendMessage_users.UserName

Users.objects.create(UserID = User_ID , UserName = User_Name, Email = User_Email ,Phone = User_Phone) Users.objects.create(UserID = User_ID,UserName = User_Name,Email = User_Email,Phone = User_Phone)

The model.py is 该model.py是

class Users(models.Model):
    UserID = models.IntegerField(verbose_name='User ID',max_length=255,primary_key=True)
    UserName = models.CharField(verbose_name='User Name',max_length=254)
    Email = models.EmailField(verbose_name='Email',max_length=254)
    Phone = models.CharField(verbose_name='Phone Number',max_length=254)

and the view.py is 并且view.py是

def add_user(request):
    User_ID = request.POST.get('UserID')
    User_Name = request.POST.get('UserName')
    User_Email = request.POST.get('Email')
    User_Phone = request.POST.get('Phone')
    Users.objects.create(UserID = User_ID , UserName = User_Name, Email = User_Email ,Phone = User_Phone)
    return render_to_response('add_user.html', context_instance=RequestContext(request))

and add_user.html is 并且add_user.html是

{% extends "base.html" %}

{% block Content %}

<div class="container">
  <!-- Contacts -->
  <div id="contacts">
    <div class="row">
      <!-- Alignment -->
      <div class="col-sm-offset-3 col-sm-4">
        <!-- Form itself -->
        <form name="AddUsers" action="" method="POST" class="well" id="contactForm"  novalidate>
          {% csrf_token %}
          <legend>Send Messages</legend>
          <div class="control-group">
            <div class="controls">
              <input type="text" class="form-control"
              placeholder="Subject" id="UserID" name="UserID" required
              data-validation-required-message="Please enter UserID" />
              <p class="help-block"></p>
            </div>
          </div>
          <div class="control-group">
            <div class="controls">
              <input type="text" class="form-control"
              placeholder="Subject" id="UserName" name="UserName" required
              data-validation-required-message="Please enter UserName" />
              <p class="help-block"></p>
            </div>
          </div>
          <div class="control-group">
            <div class="controls">
              <input type="text" class="form-control"
              placeholder="Subject" id="Email" name="Email" required
              data-validation-required-message="Please enter Email" />
              <p class="help-block"></p>
            </div>
          </div>
          <div class="control-group">
            <div class="controls">
              <input type="text" class="form-control"
              placeholder="Subject" id="Phone" name="Phone" required
              data-validation-required-message="Please enter Phone" />
              <p class="help-block"></p>
            </div>
          </div>
          <div id="success"> </div>
          <button type="submit" class="btn btn-primary btn-sm pull-right">Send</button><br />
        </form>
      </div>
    </div>
  </div>
</div>



{% endblock %}

The error happens because when you make a GET request to that url, the view it's trying to get data from the POST data, which obviously doesn't exist at the time and it's trying to create an object with this 'none' data. 发生该错误的原因是,当您对该URL发出GET请求时,该视图正试图从POST数据中获取数据,该数据当时显然不存在,并且正试图使用​​此“无”数据创建对象。 In the view you have to make a difference for each request method you are expecting (GET and POST I'm assuming), by checking the request.method value. 在视图中,必须通过检查request.method值,为期望的每种请求方法(我假设是GET和POST)做出改变。

试试这个:

models.Users.objects.create()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM