شما به این ویدیو دسترسی ندارید
شما به این ویدیو دسترسی ندارید
سلام استاد خسته نباشید عالی بود
فقط اینکه من حس میکنم این جلسه رو یاد نگرفتم یعنی یه مقدار سخت بود هر کار میکنم خودم دوباره بنویسم کد رو نمیتونم . چیکار کنم؟
ارسال نظر
سلام
مشکلی نیست، اگر چند بار ویدیو رو ببینی و مستندات رو بخونی متوجه میشی
من کدم رو چند بار چک کردم درست مثل شما پیش میرم ولی به خطا میخورم وقتی میخوام لاگین کنم و خطاشم اینه:
ModuleNotFoundError at /account/login/
No module named 'account/authenticate'
ارسال نظر
سلام
ماژولی که داری فراخوانی میکنی وجود ندارد
سلام آخر هر استرینگت توی ستینگ کاما نذاشتی
سلام استاد وقتتون بخیر
به این ارور برخوردم:
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
طبق stack overflow به اول settings.py خطوط
import django
()django.setup
اضافه کردم اما مشکل حل نشد و ارور دیگه ای نشون داد:
RuntimeError: Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
ارسال نظر
سلام
اون چیزی که از stack overflow پیدا کردی رو حذف کن.
احتمالا داخل فایل init چیزی اضافه کردی یا داخل فایل apps.py چیزی رو تغییر دادی.
به هر حال از کد و ارور عکس بگیر برام بفرست
سلام استاد
من یچیزی رو متوجه نمیشم
وقتی اینکلاس emailbackends رو اضافه میکنیم هنوز قسمتی که توی متد post لاگین نوشتیم برای authenticate چرا کاربرد داره؟
اگر توی Settings ما توی auth email backeds ما قسمت Modelbackends رو کلا وارد نکینم چی میشه؟
برام ارتباطشون گنگه
ارسال نظر
سلام
متد authenticate میره AUTHENTICATION_BACKENDS رو از داخل تنظیمات صدا میزنه
حالا اگه 'django.contrib.auth.backends.ModelBackend'
رو پیدا نکنه چی میشه؟
پیدا میکنه
حتی اگر توی کد ننویسیمش خودش پیش فرض مینویسه؟و پیداش میکنه؟
استاد من یه ایمیل هم فرستادش میشه راهنماییم کنیدبه خطا خوردم
عالی بود
واقعا دمتون گرم برام سوال بود چطور میشه هم با ایمیل و هم با یوزرنیم لاگین کرد
ارسال نظر
سلام وقت بخیر
من بعد از اضافه کردن authentication backend به روش اول به این ارور برخوردم:
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
طبق stack overflow به اول settings.py خطوط
import django
()django.setup
اضافه کردم اما مشکل حل نشد و ارور دیگه ای نشون داد:
RuntimeError: Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
ارسال نظر
سلام
احتمالا به مشکل circular import خوردید. به ایمپورتهایی که دارید یه نگاهی بندازید که مشکلی نداشته باشن.
و اینکه آیا داخل فایل __init__ چیزی رو ایمپورت کردید؟
سلام وقتتون بخیر ... منم به همین مشکل برخوردم ، این ارور حل کردین ؟ ممنون میشم اگه راهنماییم کنین ...
سلام این email=username قرار دادید نمیشد email=email قرار داد چرا username گذاشتید؟ درست متوجه نشدم این قسمتو
ارسال نظر
سلام
مگه شما داخل متد authenticate آرگومانی به اسم email دارید که بخواید ازش استفاده کنید؟
همونطور که داخل ویدیو گفتم مقداری که از سمت کاربر داره برای ما میاید اسمش username هست اما قراره کاربر داخلش email رو وارد کنه.
سلام خسته نباشید
یه سوالی داشتم ، این روشی که استفاده کردید یه مشکلی داره اینکه وقتی ما میخایم با ایمیل وارد بشیم ، ابتدا کوئری میزنه و توی username ها میگرده ، اگر نبود میره سراغ email ها
در واقع مشکل پرفورمنس داره ، چطور میشه یکاری کرد که اگر ایمیل بود فقط توی ایمیل ها بگرده و اگر مثلا username بود، توی username ها
ارسال نظر
سلام
مشکل پرفورمنس نداره. اگر داشت خودم میگفتم.
از همون روشی که من گفتم استفاده کنید
من با استفاده از چند خط کد که از stackoverflow پیدا کردم ، کوئری هایی که زده میشه به دیتابیس رو بررسی کردم ، وقتی کاربر مثلا username میزنه و اون username پیدا میشه ، دیگه کوئری دوم رو نمیزنه ، ولی وقتی ایمیل وارد میشه ، یک کوئری میزنه به دیتابیس و توی username ها میگرده، چون پیدا نمیشه ،میره یک کوئری دیگه میزنه و توی email ها میگرده ، من میخام یکاری کنم اگر email بود دیگه کوئری نزنه برای username ها و مستقیم فقط یک کوئری بزنه برای email ها
حالا باز اگه من دارم اشتباه میکنم ، لطفا من رو اصلاح کنید ، ممنون میشم
ترتیب AUTHENTICATION_BACKENDS ها مهمه و جنگو اینها رو به ترتیب میگرده. اگر اولین AUTHENTICATION_BACKEND جواب مثبت بده، جنگو دیگه سراغ بعدی نمیره.
اینکه شما میخواید اول ایمیل رو بررسی کنه و اگر وجود داشت دیگه سراغ username نره، به طور اتوماتیک داره انجام میشه.
فقط کافیه اون AUTHENTICATION_BACKENDS که برای ایمیل نوشتی رو بزاری بالای AUTHENTICATION_BACKENDS نام کاربری.
سلام ، ممنون از پاسخ
نه منظورم این نبود ، من میخام چک کنم با یه شرط که اگر ایمیل بود ( مثلا با email validator ) بره توی email ها رو بگرده ، اگر نبود بره توی username ها رو بگرده ، این رو چجور میشه پیاده سازی کرد ، ممکنه یه راهنمایی بکنید
در واقع میخام بهش بگم که دقیقا کجارو بگرده با توجه به مقداری که کاربر وارد کرده
سلام امیر خسته نباشی
اگر بخوایم فقط براساس ایمیل اعتبارسنجی کنیم، چطوری ویو رو مینویسیم؟
authenticate.py رو چی؟
ارسال نظر
سلام
در دوره فرشگاه جنگو توضیح دادم.
اقا من اشتباه کردم حله یه بخش از کد رو تو ویو ها ننوشته بودم ارور میداد
ارسال نظر
The view account.views.view didn't return an HttpResponse object. It returned None instead.
ارسال نظر
سلام یه مشکلی هس . وقتی از اثنتیکشین خود جنگو استفاده نمیکنه و رمز اشتباه میدیم موقع لاگین چون None ریترن کردیم و httpresponse نشون نمیدیم ارور میده اینو چطور هندل کنیم؟ موقع امتحان اینو امتحان نکردین ب باگ خوردیم:(
ارسال نظر
mamnoon az amoozeshetoon
ارسال نظر
سلام مرسی از آموزشتون
برای من یه مشکلی داره : وقتی لاگ اوت رو میزنم next رو account/logout قرار میده ولی موقعی که لاگین رو میزنم مقدارش None میشه و logout نمیکنه
ارسال نظر
سلام
کد من هم همین مشکل رو داره و همچنین کد آقای «ali»
گمونم به این خاطره که کلا زمانی که متد user_login با متد GET فراخوانی می شه next توی url قرار داره. ولی زمانی با متد POST فراخوانی میشه (با زدن روی دکمه Login) دیگه نه next توی url هستش و نه مقداری که دفعه اول از متد GET گرفته بود توش مونده (چون متد user_login دوباره فراخوانی شده و کلا تمام متغیر ها خالی میشن و از اول مقدار دهی میشن). در نتیجه مقدار next همیشه موقع اجرا شدن متد login_url روی Null باقی می مونه و شرط redirect اجرا نمیشه. اما در عجبم که چطور توی کد استاد کار کرد؟؟؟
سلام چرا این کد کاربر رو ریدایرکت نمیکنه به یو ار ال next?
def user_login(request):
next_url = request.GET.get('next')
if request.method == 'POST':
form = UserLoginForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
user = authenticate(request, username=cd['username'], password=cd['password'])
if user is not None:
login(request, user)
messages.success(request, 'you logged in successfully', 'success')
if next_url:
return redirect(next_url)
return redirect(request.GET.get('next'))
else:
messages.error(request, 'wrong username or password', 'warning')
else:
form = UserLoginForm()
return render(request, 'account/login.html', {'form':form})
ارسال نظر
درود ، ممنون از تدریس زیبا
بعدا اگه model user رو بکوبیم از اول بسازیم (روش subtitue)
این decorator بازم کار میکنه ؟
یه مورد دیگه ، الان ما وقتی لاگین میکنیم نباید به صفحه لاگین و رجیستر دسترسی داشته باشیم ، اینو چجوری هندل کنیم ؟
فکنم وقتی وقتی لاگین باشیم و مثلا پروفایل یکی دیگه رو درخواست کنیم ، باید error 403 بده یا مثلا برای سطح دسترسی ، اینو چی ؟
این 2 مورد رو تو دوره های بعدی گفتید ؟
ارسال نظر
سلام.ممنون بابت آموزش های خوبتون- اینکه با آموزش داکیومنتیشن رو هم نشون میدین خیلی خوب و کاربردی هست
ارسال نظر
ارسال نظر