مهاجرت

جنگو

سلام

مهاجرت یکی از بخش ها و بحث های بنیادی در برنامه نویسی تحت وب با جنگو است. مهاجرت مربوط به توسعۀ مدل های مربوط به برنامه در شرایطی می شود که بعد از توسعۀ مدل ها، به صورت خودکار دیتابیس نیز خود را با مدل ها بروز رسانی کند و با برنامه همخوانی داشته باشد.

زمانی که فرمان python manage.py migrate را اجرا می کنیم؛ جنگو تمام فایل های مهاجرت را گرفته و شمای دیتابیس را ایجاد می کند. جنگو برای انجام مهاجرت از یک جدول به خصوص استفاده می کند که با نام django_migrations شناخته می شود. جنگو در این جدول تمام مهاجرت های پذیرفته شده را ثبت می کند.

اگر سعی کنیم دوباره دستور بالا را اجرا کنیم؛ جنگو متوجه می شود که به آخرین تغییرات مهاجرت کرده و بنابراین کار جدیدی انجام نمی دهد.

بیایید یک فیلد جدید را به مدل تاپیک اضافه و سپس مهاجرت کنیم.

boards/models.py (مشاهده کد کامل)

در اینجا فیلد PositiveIntegerField را اضافه کرده ایم. قرار است این فیلد تعداد بازدیدهای صفحه را درون خود ذخیره کند.

قبل از اینکه بخواهیم در برنامۀ خود از این فیلد استفاده کنیم؛ ضروری است تا شمای دیتابیس خودمان را بروزرسانی کنیم.

دستور makemigrations به صورت خودکار فایل 0003_topic_views.py را ایجاد می کند. از  این فایل برای تغییر دیتابیس و اضافه کردن فیلد ویو استفاده می شود.

حالا به جنگو می گوییم که مهاجرت را آغاز و اعمال کند.

حالا می توانیم از این فیلد برای پیگیری تعداد بازدیدهای یک صفحه استفاده کنیم.

boards/views.py (مشاهده کد کامل)

 

templates/topics.html (مشاهده کد کامل)

حالا یک تاپیک را باز کرده و چند بار آن صفحه را رفرش می کنیم. همانطور که مشاهده می شود با هر بار فروش به تعداد بازدیدهای صفحه افزوده میی شود.

در اینجا به پایان فصل ششم می رسیم. شما می توانید کد های مربوط به این فصل را از آدرس زیر دانلود کنید 🙂

http://tamadon.net/python/code/520-django-beginners-guide-part6.zip

ترجمۀ اختصاصی توسط تمدن

 

مطلب بعدی: فصل بعدی: استراتژی ویوهای مبتنی بر کلاس

مطلب قبلی: QuerySets

بدون دیدگاه

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جنگو
صفحه بندی با استفاده از FBV

سلام کد زیر مربوط به پیاده سازی صفحه بندی با استفاده از توابع است. boards/views.py (مشاهده کد کامل) from django.db.models import Count from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.shortcuts import get_object_or_404, render from django.views.generic import ListView from .models import Board def board_topics(request, pk): board = get_object_or_404(Board, pk=pk) queryset = …

جنگو
صفحه بندی و شماره گذاری صفحات

سلام این کار با استفاده از CBV بسیار آسان است. اما قبل از آن می خواهیم صفحه بندی مطالب را به صورت دستی انجام دهیم تا از مکانیسم واقعی آن آگاهی پیدا کنی و سپس از تکنولوژی CBV بهره برداری می کنیم. از الآن به بعد روی ویوی board_topics کار …

جنگو
ویوی لیست | List View

سلام با بازتعریف ویوی قبلی می توانیم از مزایای CBV بهره مند شویم. در این مثال می خواهیم صفحۀ اصلی را تغییر دهیم. در این صفحه ما صرفا تمام بوردها را از دیتابیس گرفته و در HTML لیست می کنیم. boards/views.py from django.shortcuts import render from .models import Board def …

هرگونه استفادۀ از این آموزش به صورت رایگان و با ارجاع به تمدن جایز است.