Когда я пытаюсь добавить данные в базу данных с помощью Django, я получаю ошибку calls NOT NULL constraint failed: pages_login.password

Странно то, что я не могу отправить данные и добавить их в базу данных, когда я делаю user_data.save() комментарий и открываю страницу, затем удаляю #, но когда я перехожу на нашу страницу и пытаюсь присоединиться к ней снова, я получаю ошибку " NOT NULL constraint failed: pages_login.password"

папкаmodels.py

from django.db import models

class Login(models.Model):

    username = models.CharField(max_length=40)
    password = models.CharField(max_length=20)

папкаviews.py

from django.shortcuts import render
from .models import Login

def index(request):
    index_context = {
        'name': 'yahia',
        'age': '20',
    }
    return render(request, 'pages/index.html', index_context)

def about(request):

    usernamee = request.POST.get('username')
    password = request.POST.get('password')
    user_data = Login(username=usernamee, password=password)
    user_data.save()

    return render(request, 'pages/about.html')

здесь user_data.save() когда я комментирую это так #user_data.save() кодовое слово и страница открывается и я могу отправить данные, когда я убираю #, но когда я перезапускаю страницу, я получаю ошибку

admin.py page

from django.contrib import admin
from .models import Login
# Register your models here.
admin.site.register(Login)

полная ошибка

IntegrityError at /about/
NOT NULL constraint failed: pages_login.password
Request Method: GET
Request URL:    http://127.0.0.1:8000/about/
Django Version: 3.2.7
Exception Type: IntegrityError
Exception Value:    
NOT NULL constraint failed: pages_login.password
Exception Location: C:\Users\a\OneDrive - Higher Technological Institute\Desktop\test\lib\site-packages\django\db\backends\sqlite3\base.py, line 423, in execute
Python Executable:  C:\Users\a\OneDrive - Higher Technological Institute\Desktop\test\Scripts\python.exe
Python Version: 3.9.5
Python Path:    
['C:\\Users\\a\\OneDrive - Higher Technological '
 'Institute\\Desktop\\test\\project',
 'c:\\users\\a\\appdata\\local\\programs\\python\\python39\\python39.zip',
 'c:\\users\\a\\appdata\\local\\programs\\python\\python39\\DLLs',
 'c:\\users\\a\\appdata\\local\\programs\\python\\python39\\lib',
 'c:\\users\\a\\appdata\\local\\programs\\python\\python39',
 'C:\\Users\\a\\OneDrive - Higher Technological Institute\\Desktop\\test',
 'C:\\Users\\a\\OneDrive - Higher Technological '
 'Institute\\Desktop\\test\\lib\\site-packages']
Server time:    Sun, 19 Sep 2021 02:10:55 +0000

Я думаю, что сначала вам нужно проверить некоторые шаги, которые я упомянул здесь.

  1. Проверьте, правильно ли вы зарегистрировали свою модель.

  2. Проверьте, каким методом вы отправили свою форму. Если ваш метод POST, то напишите соответствующий код в views.py для прослушивания этого запроса.

    .
     def index(request):
          return HttpResponse("This is home page.")
     def about(request):
         if request.method=="POST":
              username=request.POST.get('username')
              password=request.POST.get('password')
              user_data=Login(username=username,password=password)
              user_data.save()
              return redirect('index')
    
          return render(request,'about.html')
    
  3. Проверьте, что у вас есть makemigrations и migrate.

      python manage.py makemigrations
      python manage.py migrate
    

4.Проверьте, какой метод вы использовали в форме, и напишите соответствующий код для прослушивания этого запроса.

 <form action="about" method="POST">
        {% csrf_token %}
        <label for="username">Username : </label>
        <input type="text" name="username" id="username"> <br>
        <label for="password">Password : </label>
        <input type="password" name="password" id="password"> <br>
        <button type="submit">Login</button>
    </form>
  1. Проверьте, правильно ли вы зарегистрировали свое приложение в settings.py.

    INSTALLED_APPS = [
      'myapp.apps.MyappConfig',
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
       ]
    
  2. Если ваш method является GET, то напишите код для прослушивания этого запроса.

Я упомянул все возможные ошибки, которые я сделал, и я получил ту же ошибку, что и вы. Поэтому, наконец, проверьте свой код и запустите его снова.

Если в моем коде есть какие-либо орфографические ошибки, пожалуйста, не обращайте внимания. Спасибо

Вернуться на верх