English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

النماذج الجينية في Django

في بعض الحالات، كتابة كود الرؤية، كما رأينا في العمل السابق، يمكن أن يكون أمرًا معقدًا حقًا. تخيل أنك بحاجة إلى صفحة ثابتة أو صفحة قائمة واحدة فقط. يقدم Django أيضًا طريقة بسيطة لضبط هذه الرؤى البسيطة تُدعى الرؤى الجماعية.

مختلفة عن الرؤى التقليدية، الرؤية العامة هي فئة تحتوي على فئات وليس على وظائف. يقدم Django أيضًا مجموعة من الفئات الرؤى الجماعية، وكل رؤية عادية هي هذه الفئات أو تستمر من فئة منهم.

هناك 10+ أنواع جماعية

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
>>> استيراد django.views.generic
 >>> dir(django.views.generic)
 ['ArchiveIndexView', 'CreateView', 'DateDetailView', 'DayArchiveView', 
    'DeleteView', 'DetailView', 'FormView', 'GenericViewError', 'ListView', 
    'MonthArchiveView', 'RedirectView', 'TemplateView', 'TodayArchiveView', 
    'UpdateView', 'View', 'WeekArchiveView', 'YearArchiveView', '__builtins__', 
    '__doc__', '__file__', '__name__', '__package__', '__path__', 'base', 'dates', 
    'detail', 'edit', 'list'

يمكنك استخدام الرؤى الجماعية. دعونا نرى بعض الأمثلة لمعرفة كيف يعمل ذلك.

صفحات ثابتة

دعونا ننشر الصفحة الثابتة من نموذج 'static.html'.

صفحتنا static.html −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
<html>
    <body> 
       هذا  هو  صفحة  ثابتة  !!! 
    </body>
 </html>

إذا قمنا بذلك، بناءً على الطريقة التي تعلمناها من قبل، سنضطر إلى تغيير myapp/views.py −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
من   django.shortcuts   استيراد  render
 def static(request):
    return render(request, 'static.html', {})

ملف myapp/urls.py كالتالي −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
from django.conf.urls import patterns, url
 urlpatterns = patterns("myapp.views", url(r'^static/', 'static', name = 'static'),)

أفضل طريقة هي استخدام عرض泛سيك. لهذا، سيصبح ملف myapp/views.py كالتالي −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
from django.views.generic import TemplateView
 class StaticView(TemplateView):
    template_name = "static.html"

و ملف myapp/urls.py الخاص بنا سيكون كالتالي −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
from myapp.views import StaticView
 from django.conf.urls import patterns
 urlpatterns = patterns("myapp.views", (r'^static/', StaticView.as_view()),)     , StaticView.as_view()),)

عند زيارة /myapp/static سيتم الحصول على −

لتحقيق نفس النتيجة، يمكننا تنفيذ ما يلي −

لا تحتاج إلى تعديل ملف views.py        قم بتعديل ملف url.py إلى -    

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
from django.views.generic import TemplateView
 from django.conf.urls import patterns, url
 urlpatterns = patterns("myapp.views",
    url(r'^static/', TemplateView.as_view(template_name = 'static.html')),)

كما ترون، يكفي فقط تغيير الطريقة الثانية في ملف url.py

من قائمة البيانات في قاعدة البيانات وعرض البيانات

نريد قائمة جميع المدخلات في نموذج Dreamreal. بهذه الطريقة يصبح استخدام عرض泛سيك ListView سهلاً. قم بتعديل ملف url.py وترقيته -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
from django.views.generic import ListView
 from django.conf.urls import patterns, url
 urlpatterns = patterns(
    "myapp.views", url(r'^dreamreals/', ListView.as_view(model = Dreamreal, 
       template_name = "dreamreal_list.html")),
 )

من المهم أن نلاحظ، في هذا النقطة، يتم تمرير المتغير عبر عرض泛سيك إلى نموذج object_list. إذا كنت ترغب في إضافة اسم خاص، ستحتاج إلى إضافة معامل context_object_name إلى دالة as_view. ثم يصبح url.py كالتالي -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
from django.views.generic import ListView
 from django.conf.urls import patterns, url
 urlpatterns = patterns("myapp.views",
    url(r'^dreamreals/', ListView.as_view(),
       template_name = "dreamreal_list.html")),
       model = Dreamreal, context_object_name = "dreamreals_objects",)

ثم سيصبح النموذج المرتبط −

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
{% extends "main_template.html" %}
 {% block content %}
 Dreamreals:<p>
 {% for dr in object_list %}
 {{ dr.name }}</p>
 {% endfor %}
 {% endblock %}

زيارة /myapp/dreamreals/ سيتم إنشاء الصفحة التالية −