تسجيل الاعضاء
في جانغو او البرمجة عموما انت مخير في كثير من الطرق والنتيجة واحدة
اليوم نتكلم عن انشاء صفحة تسجيل الاعضاء اعتمادا على الجدول المقدم من جانغو
الجدول افتراضي يأتي في جانغو اثناء انشاء المشروع وكتابة الامر
python manage.py migrate
ستلاحظ عند تنفيذه اول مره انه يقوم بانشاء جداول جديده من ضمنها جدول اليوزرات والجلسات الى اخره
لنبدأ طريقة انشاء تطبيق جديد خاص باليوزات
في البداية نقوم بانشاء تطبيق جديد باسم accounts اختر الاسم الذي تراه يناسبك
python manage.py startapp accounts
وكما تعلمنا سنذهب الى ملف settings.py لاضافة التطبيق الجديد ضمن التطبيقات
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# هنا بداية تطبيقاتنا الجديد
'accounts',
]
بعد ان قمنا باضافة التطبيق الجديد
سنذهب الى مجلد accounts وسنقوم بانشاء ملف جديد باسم forms.py لكي ننشئ الاستمارة الخاصة بتسجيل عضوية جديدة
نشرح الكود التالي
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
class UserCreateForm(UserCreationForm):
class Meta:
fields = ('username', 'email', 'password1', 'password2')
model = get_user_model()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['username'].label = 'Display name'
self.fields['email'].label = 'Email Address'
السطر الاول والثاني هي مكتبات جاهزة داخل جانغو السطر الاول هو المودل الخاص بالحقول الخاصة بالمستخدم
السطر الثاني مسؤول عن انشاء عضوية جديدة
من ثم قمنا باشناء كلاس جديد يرث كل خصائص UserCreationForm
بعدها حددنا الحقول التي نريد ان تظهر لليوزر اثناء التسجيل
fields = ('username', 'email', 'password1', 'password2')
اسم المستخدم , الايميل , الباس مكرر مرتين للتاكيد
بالامكان اضافة الاسم الاول + اسم العائله
وايضا لو اردنا ان نضيف بروفايل خاص نقوم بانشاء حقول جديدة داخل الجدول الرئيسي او جدول اخر مربوط بالجدول الرئيسي
الدالة init تقوم بتنفيذ كل مابداخلها عند استدعاء الكلاس وداخلها init الاصلي من كلاس UserCreationForm
وقمنا بتغيير قيمة الرسالة التي تظهر فوق كل حقل بصفحة تسجيل عضوية جديدة
---------------------------------------------------
بعد ان قمنا بانشاء استمارة تسجيل عضوية الان نذهب الى ملف views.py
لكي نقوم بعمل دالة او كلاس
في هذا الدرس ساقوم بعمل كلاس يرث من كلاس موجود افتراضيا بجانغو لتسهيل البرمجة فقط لاغير
from . import forms
from django.views.generic import CreateView
# Create your views here.
class SignUp(CreateView):
form_class = forms.UserCreateForm
success_url = reverse_lazy('login')
template_name = 'accounts/signup.html'
السطر الاول استدعاء ملف forms.py لكي نستخدم الاستمارة التي قمنا بانشائها سابقا
السطر الثاني مكتبة CreatView افتراضيا تاتي من جانغو
من ثم قمنا بعمل كلاس جديد باسم SignUp يرث جميع خصائص CreatView
وبه ثلاثة سطور
السطر الاول form_class متغير جديد اسمه ثابت قيمتة الاستمارة من ملف forms
السطر الثاني success_url بعد تسجيل عضوية جديدة يقوم تلقائيا بتحويلنا لصفحة الدخول واستخدمنا مكتبة
reverse_lazy
استدعاء المكتبة كالتالي
from django.core.urlresolvers import reverse_lazy
اخر سطر
قمنا بتحديد مسار القالب المسؤول عن عرض صفحة تسجيل الدخول
لنقم بانشاء مجلد جديد داخل مجلد templates باسم accounts
وداخل هذا المجلد سننشئ ملفنا الجديد signup.html
بعد ان قمنا بانشائه نقوم الان بكتابة كود html لعرض الاستمارة كاملة
{% extends "base.html" %}
{% block content %}
<div class="container">
<h1>Sign Up</h1>
<form action="" method="POST">
{% csrf_token %}
{{ form }}
<input type="submit" value="SignUp" class="btn btn-default">
</form>
</div>
{% endblock %}
كل ماسبق كود منسق فقط لاغير مايهمنا هو form فقط لاغير
الان بقي لدينا امر اخير وهو تعريف دالتنا داخل ملف urls.py لكي يتعرف عليها الرابط عند طلبه
الان فقط نستدعي ملف views داخل ملف urls.py
ونظيف التالي فقط لاغير
url(r'^signup/$', views.SignUp.as_view(), name='signup'),
انتهى تقريبا كل شيء نقوم بتشغيل السيرفر ونتوجه الى الرابط
127.0.0.1:8000/signup
النتيجة النهائية
محتوى الدورة
django | |
---|---|
1 | متطلبات قبل بدء الدورة |
2 | ماهو جانغو |
3 | انشاء أول مشروع جانغو |
4 | Hello World |
5 | التعامل مع القوالب |
6 | حقن القوالب |
7 | قواعد البيانات-1 |
8 | قواعد البيانات-2 |
9 | التعامل مع لوحة التحكم |
10 | عرض البيانات بالصفحة الرئيسية |
11 | عرض التفاصيل |
12 | اضافة محتوى |
13 | تحديث البيانات |
14 | الاستمارات |
15 | الاستمارات-2 |
16 | تسجيل الاعضاء الدرس الحالي |
17 | تسجيل الدخول |
18 | الفلاتر في جانغو |
19 | التعامل مع قواعد البيانات- متقدم ( الدرس الاخير) |
عن الدرس
1 إعجاب |
2 متابع |
0 مشاركة |
2335 مشاهدات |
منذ 6 سنوات |
التعليقات (1)
السلام عليكم ،،
الف شكر على الدروس التي وجدت بعد متابعة الكثير انها اسهل طريقة لتعلم الاساسيات المهمة في Django .
في هذا الدرس واجهتني مشكلة بعد تطبيق الخطوات ، وكانت رسالة الخطأ :
AttributeError: module 'blog.views' has no attribute 'SignUp'
حليت المشكلة من خلال اضافة الكود التالي لمف الراوبط urls.py :
from accounts import views as views2
والتعديل على الرابط ليصبح كالتالي :
url(r'^signup/$', views2.SignUp.as_view(), name='signup'),
ولكن ظهرت لي مشكلة في ملف sinup.html :
In template /Users/yaseralshikh/Documents/development/name_project/templates/accounts/signup.html
, error at line 1
django.template.exceptions.TemplateDoesNotExist: base.html
بعد بحث ومحاولات حليت المشكلة باضافة ملف تحت اسم base.html داخل مجلد templates وبداخله الكود التالي :
<body>
<div class="page-header">
<h1><a href="/">Django Blog</a></h1><hr>
</div>
{% block content %}
{% endblock %}
</body>
عرض المزيد.. جديد مقالاتي
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !