على مدى الأسبوعين الماضيين، كنت أعمل على إعداد Django من الصفر وبناء تطبيق استطلاع بسيط. سترشدك هذه المقالة إلى كل ما قمت به، بدءًا من تثبيت Python وDjango، وإعداد بيئة افتراضية، وإنشاء مشروع جديد، وإنشاء تطبيق وظيفي يسمى استطلاعات الرأي.
1. إعداد بايثون وجانغو
للبدء، تأكدت من تثبيت Python على نظامي. إذا لم تكن قد قمت بتثبيته بعد، فيمكنك تنزيله من python.org.
الخطوة 1: تثبيت بايثون وإعداد بيئة افتراضية
أردت أن أبقي تبعيات مشروعي معزولة، لذلك استخدمت بيئة افتراضية.
# Install virtualenv if you don't have it pip install virtualenv # Create a virtual environment virtualenv myenv # Activate the environment # On Windows: myenv\Scripts\activate # On macOS/Linux: source myenv/bin/activate
الخطوة 2: تثبيت جانغو
بمجرد تنشيط البيئة، قمت بتثبيت Django.
pip install django
ثم قمت بتأكيد التثبيت عن طريق تشغيل:
django-admin --version
2. بدء مشروع جانغو جديد: mysite
الآن، حان الوقت لإنشاء مشروع Django الخاص بي. قررت أن أسميه موقعي.
django-admin startproject mysite cd mysite
أدى هذا إلى إنشاء البنية الأساسية لمشروع Django مع الإعدادات والتكوينات.
3. إنشاء تطبيق Django جديد: استطلاعات الرأي
بعد إعداد المشروع، قمت بإنشاء تطبيق جديد يسمى استطلاعات الرأي، والذي سيحتوي على كل المنطق وطرق العرض الخاصة بتطبيق الاستطلاع الخاص بي.
python manage.py startapp polls
لقد أضفت التطبيق الجديد إلى INSTALLED_APPS في mysite/settings.py:
INSTALLED_APPS = [ # other installed apps 'polls', ]
4. تحديد النماذج
لقد بدأت بتحديد نموذجين: السؤال والاختيار. يحتوي السؤال على نص سؤال وتاريخ نشر، بينما يحتوي الاختيار على إشارة إلى سؤال ويخزن النص مع عدد الأصوات.
إليك ملفmodels.py الموجود في تطبيق الاستطلاعات:
# models.py import datetime from django.db import models from django.contrib import admin from django.utils import timezone class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') def __str__(self): return self.question_text @admin.display( boolean=True, ordering='pub_date', description='Published recently?', ) def was_published_recently(self): now = timezone.now() return now - datetime.timedelta(days=1)5. إنشاء قاعدة البيانات وتشغيل عمليات الترحيل
بعد ذلك، قمت بإنشاء قاعدة البيانات وتطبيق عمليات الترحيل:
python manage.py migrateثم قمت بإنشاء ملفات الترحيل لتطبيق الاستطلاعات:
python manage.py makemigrations polls python manage.py migrate6. كتابة طرق العرض لتطبيق الاستطلاع
قمت بكتابة عدة طرق عرض للتعامل مع عرض قائمة الأسئلة وإظهار تفاصيل الأسئلة وإظهار نتائج التصويت. تعتمد طرق العرض هذه على الفصل، وذلك باستخدام طرق العرض العامة المضمنة في Django.
إنشاء طرق عرض للاستطلاعات
ثم قمت بإنشاء طرق العرض التي تتحكم في كيفية عرض البيانات للمستخدم. لقد استخدمت وجهات نظر جانغو العامة لإبقاء الأمور بسيطة.إليك ملف view.py:
# views.py from django.http import HttpResponse from django.shortcuts import get_object_or_404, render from django.urls import reverse from django.views import generic from django.utils import timezone from .models import Question, Choice class IndexView(generic.ListView): template_name = 'polls/index.html' context_object_name = 'latest_question_list' def get_queryset(self): """Return the last five published questions.""" return Question.objects.order_by('-pub_date')[:5] class DetailView(generic.DetailView): model = Question template_name = 'polls/detail.html' def get_queryset(self): """Exclude questions that aren't published yet.""" return Question.objects.filter(pub_date__lte=timezone.now()) class ResultsView(generic.DetailView): model = Question template_name = 'polls/results.html' def vote(request, question_id): return HttpResponse(f"You're voting on question {question_id}.")
7. تكوين عناوين URL
لقد أضفت أنماط URL إلى ملف urls.py في تطبيق الاستطلاعات لربط كل عرض بعنوان URL محدد.
# urls.py from django.urls import path from . import views app_name = 'polls' urlpatterns = [ path('', views.IndexView.as_view(), name='index'), path('/', views.DetailView.as_view(), name='detail'), path(' /results/', views.ResultsView.as_view(), name='results'), path(' /vote/', views.vote, name='vote'), ]
8. إنشاء قوالب للطرق العرض
وأخيرًا، قمت بإنشاء قوالب HTML لعرض الأسئلة والنتائج. يتم وضع القوالب في مجلد الاستطلاعات/القوالب/الاستطلاعات/.
index.html
{% if latest_question_list %}
No polls are available.
{% endif %}detail.html
result.html
{{ question.question_text }}
تشغيل التطبيق
لاختبار التطبيق، قمت بتشغيل خادم التطوير:
python manage.py runserver
أدى الانتقال إلى http://127.0.0.1:8000/polls/ إلى عرض قائمة الاستطلاعات، ويمكنني عرض التفاصيل والتصويت ورؤية النتائج.
على مدى الأسبوعين الماضيين، تعلمت كيفية إعداد Django، وإنشاء مشروع، وإنشاء تطبيق استطلاع يعمل بكامل طاقته. كان من الرائع أن نرى كيف يرتبط كل شيء في Django، من النماذج إلى طرق العرض إلى القوالب. لقد كانت هذه تجربة رائعة، وأنا متحمس لمعرفة المزيد عن ميزات Django القوية!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3