Zeina Almakdisi نشر 5 سبتمبر 2022 أرسل تقرير نشر 5 سبتمبر 2022 (معدل) عند تنفيذ الكود يظهر الخطأ في المتصفح UnboundLocalError at /accounts/login/ local variable 'form' referenced before assignment يظهر الخطأ في الشيفرة التالية: كود html: <form method="POST" enctype="multipart/form-data"> <h4 class="auth-header"> Login</h4> {% crsf_token %} <div class="form-group"> {{form.username|as_crispy_field}} </div> <div class="form-group"> {{form.password|as_crispy_field }} </div> url: path('login/', views.user_login, name='login'), forms: from django import forms from django.contrib.auth.models import User class Login_Form(forms.ModelForm): username=forms.CharField() password=forms.CharField(widget=forms.PasswordInput()) class Meta: model = User fields = ('username', 'password') تم التعديل في 6 سبتمبر 2022 بواسطة Wael Aljamal توضيح السؤال اقتباس
0 Haroun Taha نشر 5 سبتمبر 2022 أرسل تقرير نشر 5 سبتمبر 2022 أرفقي شيفرة دالة user_login في ملف views.py 1 اقتباس
0 Zeina Almakdisi نشر 5 سبتمبر 2022 الكاتب أرسل تقرير نشر 5 سبتمبر 2022 بتاريخ 10 دقائق مضت قال Haroun Taha: أرفقي شيفرة دالة user_login في ملف views.py from django.shortcuts import render from django.contrib.auth.models import User from .models import Profile from .forms import Login_Form from django.contrib.auth import authenticate , login from django.contrib.auth.decorators import login_required def doctors_detail(request, slug): doctors_detail = Profile.objects.get(slug = slug) return render(request, 'user/doctors_detail.html',{ 'doctors_detail' : doctors_detail, }) def user_login(request): if request.method == 'POST': form = Login_Form() username = request.POST['username'] password = request.POST['password'] user = authenticate(request , username=username , password=password) if user is not None: login(request , user) return redirect('accounts:doctors_list') else: form = Login_Form() return render(request, 'user/login.html',{ 'form':form }) اقتباس
0 Haroun Taha نشر 5 سبتمبر 2022 أرسل تقرير نشر 5 سبتمبر 2022 بتاريخ 12 دقائق مضت قال Zeina Makdisi: from django.shortcuts import render from django.contrib.auth.models import User from .models import Profile from .forms import Login_Form from django.contrib.auth import authenticate , login from django.contrib.auth.decorators import login_required def doctors_detail(request, slug): doctors_detail = Profile.objects.get(slug = slug) return render(request, 'user/doctors_detail.html',{ 'doctors_detail' : doctors_detail, }) def user_login(request): if request.method == 'POST': form = Login_Form() username = request.POST['username'] password = request.POST['password'] user = authenticate(request , username=username , password=password) if user is not None: login(request , user) return redirect('accounts:doctors_list') else: form = Login_Form() return render(request, 'user/login.html',{ 'form':form }) المُتغير form لا يُعرف بسبب أنه فقط يتم تعريفه داخل الطلب اذا كان من نوع POST يُعرف لذلك يجب وضع الelse بشكل يوازي ... if request.method == 'POST : def user_login(request): if request.method == 'POST': form = Login_Form() username = request.POST['username'] password = request.POST['password'] user = authenticate(request , username=username , password=password) if user is not None: login(request , user) return redirect('accounts:doctors_list') >> else:# هنا form = Login_Form() return render(request, 'user/login.html',{ 'form':form }) اقتباس
0 Wael Aljamal نشر 5 سبتمبر 2022 أرسل تقرير نشر 5 سبتمبر 2022 بتاريخ 2 ساعات قال Zeina Makdisi: if request.method == 'POST': لاحظي هذا الشرط، أن لن يتم تنفيذ ما بداخل الدالة مالم يكن نوع الطلب POST وفيها تعريف المتغير form بالتالي في حال كان نوع الطلبية غير POST سيتم تخطي الشرط و جزء تعريف المتغير form و عمل return مباشرة مع قيمة فارغة فيه الحل لتجنب الخطأ هو إعطاء قيمة أولية للمتغير form قبل الشرط، أو إسناد القيمة في عبارة else بعد الشرط قبل عمل return مع التأكد أن استمارة إرسال البيانات نوعها method = post def user_login(request): form = Login_Form() # هنا if request.method == 'POST': #.. else: # هنا أو form = Login_Form() return render(request, 'user/login.html',{ 'form':form }) ملاحظة: عبارة else في برنامجك موجودة لكنها ليست بنفس محاذاة تعليمة if مما سبب الخطأ اقتباس
السؤال
Zeina Almakdisi
عند تنفيذ الكود يظهر الخطأ في المتصفح
UnboundLocalError at /accounts/login/
local variable 'form' referenced before assignment
يظهر الخطأ في الشيفرة التالية:
كود html:
url:
path('login/', views.user_login, name='login'),
forms:
from django import forms from django.contrib.auth.models import User class Login_Form(forms.ModelForm): username=forms.CharField() password=forms.CharField(widget=forms.PasswordInput()) class Meta: model = User fields = ('username', 'password')
توضيح السؤال
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.