Когда я пытаюсь добавить данные в базу данных с помощью 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
Я думаю, что сначала вам нужно проверить некоторые шаги, которые я упомянул здесь.
Проверьте, правильно ли вы зарегистрировали свою модель.
Проверьте, каким методом вы отправили свою форму. Если ваш метод 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')Проверьте, что у вас есть
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>
Проверьте, правильно ли вы зарегистрировали свое приложение в
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', ]Если ваш
methodявляетсяGET, то напишите код для прослушивания этого запроса.
Я упомянул все возможные ошибки, которые я сделал, и я получил ту же ошибку, что и вы. Поэтому, наконец, проверьте свой код и запустите его снова.
Если в моем коде есть какие-либо орфографические ошибки, пожалуйста, не обращайте внимания. Спасибо