【发布时间】:2021-07-05 19:06:38
【问题描述】:
models.py
from django.db import models
class angelaFormModel(models.Model):
First_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
phone = models.IntegerField()
email = models.EmailField(max_length=50)
confirm_email=models.EmailField(unique= True)
password=models.CharField(max_length=50)
confirm_password=models.CharField(max_length=50)
def __str__(self):
return self.First_name
forms.py
from django.forms import ModelForm
from .models import angelaFormModel
from django import forms
class angelaFormModel_form(ModelForm):
class Meta:
model = angelaFormModel
widgets = {
'password': forms.PasswordInput(),
'confirm_password': forms.PasswordInput(),
}
fields = '__all__'
class angelaFormModelUpdate_form(ModelForm):
class Meta:
model = angelaFormModel
widgets = {
'password': forms.PasswordInput(),
'confirm_password': forms.PasswordInput(),
}
fields = ['First_name', 'last_name', 'phone', 'password', 'confirm_password']
views.py
from django.shortcuts import render, get_object_or_404, redirect
from .forms import angelaFormModel_form, angelaFormModelUpdate_form
from .models import angelaFormModel
# working
def home(request):
return render(request, 'home.html')
# working
def create(request):
if request.method == 'GET':
return render(request, 'create.html', {'form': angelaFormModel_form, 'message': 'Please, fill the form carefully...'})
else:
form = angelaFormModel_form(request.POST)
if form.is_valid():
email = form.cleaned_data.get('email')
confirm_email = form.cleaned_data.get('confirm_email')
password = form.cleaned_data.get('password')
confirm_password = form.cleaned_data.get('confirm_password')
if email != confirm_email:
return render(request, 'create.html', {'form': angelaFormModel_form,
'message': 'Please, fill the form again! Provided email is not matching'})
if password != confirm_password:
return render(request, 'create.html', {'form': angelaFormModel_form,
'message': 'Please, fill the form again!, Provided password is not matching'})
form.save()
return render(request, 'create.html',{'form': angelaFormModel_form,
'message': 'Bingo! your form hase been submitted.'})
# return render(request, 'create.html')
return render(request, 'create.html', {'form': angelaFormModel_form, 'message': 'Please, fill the form again with '
'another email. Provided email '
'already exists.'})
# working
def update(request):
return render(request, 'update.html')
# not working
def update_user(request, eid):
obj = angelaFormModel.objects.get(email= eid)
form = angelaFormModel_form(request.POST, instance= obj)
if form.is_valid():
form.save()
return redirect("home")
return render(request, 'update_user.html', {'form': form})
# working
def delete(request):
return render(request, 'delete.html')
# working
def deleted(request):
email_ID = request.POST.get('email_id')
print(email_ID)
angelaFormModel.objects.filter(email= email_ID).delete()
return render(request, 'deleted.html')
#working
def retrieve(request):
return render(request, 'retrieve.html')
# working
def retrieve_detail(request):
emailID = request.POST.get('email_id')
context = angelaFormModel.objects.get(email = emailID)
return render(request, 'retrieve_detail.html', {'detail': context})
# working
def list(request):
context = {}
context['dataset'] = angelaFormModel.objects.all()
return render(request, 'list.html', context)
模板
update.html
<!DOCTYPE html>
<html lang="en">
{% load crispy_forms_tags %}
<head>
<meta charset="UTF-8">
<title>update</title>
</head>
<body>
<h1>update</h1>
<h3>Please, Provide the email id of the user to update the user's data.</h3>
<!--<form method="POST" action="{% url 'update_user' %}">-->
<form method="POST" action="{% url 'update_user' %}">
{% csrf_token %}
Email: <input type="email" name="eid">
<button type="submit">Submit</button>
</form>
</body>
</html>
update_user.html
<!DOCTYPE html>
<html lang="en">
{% load crispy_forms_tags %}
<head>
<meta charset="UTF-8">
<title>update_user</title>
</head>
<body>
<h1>update_user</h1>
<form method="POST">
{% csrf_token %}
First Name: {{ form.First_name }}<br><br>
Last Name: {{ form.last_name }}<br><br>
Contact No: {{ form.phone }}<br><br>
Password: {{ form.password }}<br><br>
Confirm Password: {{ form.confirm_password }}<br><br>
<button type="submit">Update</button>
</form>
</body>
</html>
错误日志:
Traceback Switch to copy-and-paste view
E:\Development3\django\maneesh2\venv\lib\site-packages\django\core\handlers\exception.py, line 47, in inner
response = get_response(request) …
▶ Local vars
E:\Development3\django\maneesh2\venv\lib\site-packages\django\core\handlers\base.py, line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) …
▶ Local vars
还请解释模型中记录实例化的概念以及如何使用它在 Django 的 crud 操作中执行 UPADET。我被困在这里,无法执行 UPDATE 操作,这非常令人沮丧,我已经尝试了所有方法并在线搜索了解决方案。请帮助我是初学者,刚刚开始学习 Django。
【问题讨论】:
标签: python django django-views django-forms crud