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 توضيح السؤال اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 }) اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Haroun Taha نشر 5 سبتمبر 2022 أرسل تقرير مشاركة نشر 5 سبتمبر 2022 أرفقي شيفرة دالة user_login في ملف views.py 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 }) اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 مما سبب الخطأ اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
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
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.