English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في بعض الحالات، كتابة كود الرؤية، كما رأينا في العمل السابق، يمكن أن يكون أمرًا معقدًا حقًا. تخيل أنك بحاجة إلى صفحة ثابتة أو صفحة قائمة واحدة فقط. يقدم 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/ سيتم إنشاء الصفحة التالية −