<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های احمد سراجی</title>
        <link>https://virgool.io/feed/@amirahmad.seraji1996</link>
        <description>علاقه مند به حوزه برنامه نویسی به ویژه برنامه نویسی وب</description>
        <language>fa</language>
        <pubDate>2026-07-06 15:27:26</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1114966/avatar/PLucq8.jpeg?height=120&amp;width=120</url>
            <title>احمد سراجی</title>
            <link>https://virgool.io/@amirahmad.seraji1996</link>
        </image>

                    <item>
                <title>نگاهی به کار با زمان و تاریخ در پایتون</title>
                <link>https://virgool.io/@amirahmad.seraji1996/%D9%86%DA%AF%D8%A7%D9%87%DB%8C-%D8%A8%D9%87-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%B2%D9%85%D8%A7%D9%86-%D9%88-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-vgpyptle7vpz</link>
                <description>برای کار با تاریخ و زمان در پایتون می توان از کتابخانه استاندارد datetime استفاده کرد که یه صورت پیش فرض موجود است و نیاز به نصب مجزا ندارد.گرفتن تاریخ و زمان حالimport datetimenow = datetime.datetime.now()print(now)با اجرای کد بالا خروجی به صورت زیر خواهد بود.2021-08-15 19:41:31.568993گرفتن زمان حالimport datetimetoday = datetime.date.today()print(today)خروجی ما برای کد بالا به صورت زیر خواهد بود.2021-08-15دقت شود که datetime و date کلاس های درون  ماژول datetime هستند و now همراه با today توابعی هستند که به ترتیب در datetime و date تعریف شده اند.با پاس دادن ماژول datetime درون تابع ()dir که یک تابع در پایتون برای نمایش متدهای یک ماژول است می توانیم مشاهده کنیم که چه کلاس هایی در ماژول datetime قرار دارد.print(dir(datetime))خروجی [&#039;MAXYEAR&#039;, &#039;MINYEAR&#039;, &#039;__builtins__&#039;, &#039;__cached__&#039;, &#039;__doc__&#039;, &#039;__file__&#039;, &#039;__loader__&#039;, &#039;__name__&#039;, &#039;__package__&#039;, &#039;__spec__&#039;, &#039;_divide_and_round&#039;, &#039;date&#039;, &#039;datetime&#039;, &#039;datetime_CAPI&#039;, &#039;time&#039;, &#039;timedelta&#039;, &#039;timezone&#039;, &#039;tzinfo&#039;]کلاس های اصلی ماژولdatedatetimetimetimedeltaبررسی کلاس dateشما به وسیله این کلاس می توانید آبجکت هایی از تاریخ های مشخص بسازید. سازنده کلاس date سه پارامتر سال، ماه و روز را قبول می کندfrom datetime import datedate_object = date(2021, 8, 16)print(date_object)خروجی2021-08-16متد today نیز که در قبل تر با آن آشنا شدیم نیز در این کلاس قرار دارد و علاوه بر کاربرد قبلی می توان به صورت مجزا سال، ماه و روز را به وسیله آن گرفتfrom datetime import datetoday = date.today()print(&amp;quotcurrent year: &amp;quot,  today.year)print(&amp;quotcurrent month: &amp;quot,  today.month)print(&amp;quotcurrent day: &amp;quot,  today.day)بررسی کلاس timeکلاس time نیز مشابه کلاس date اما برای ساخت آبجکت های زمانی است. متد سازنده در این کلاس چهار مقدار ساعت، دقیقه، ثانیه و میکروثانیه را قبول می کند که در یک مثال کلی به صورت زیر استfrom datetime import timetime_object = time(15, 41, 40, 234566)print(time_object)خروجی15:41:40.234566کلاس datetime نیز کاربرد های هر دو کلاس time و date را به صورت یکجا دارد یعنی با این کلاس هم می توان آبجکت های تاریخ  و هم زمان و هم هر دو به صورت یک آبجکت واحد ساخت بررسی کلاس timedeltaاین کلاس برای اندازه گیری فاصله زمانی و افزودن سال، ماه و روز به آبجکت های به و جوده آمده از طریق datetime  و date استفاده می شود. import datetimenow = datetime.datetime.now()print(now)from datetime import timedeltaadd_days = now + timedelta(days=3)
print(add_days)خروجی2021-08-16 18:49:16.6810392021-08-19 18:49:16.681039اگر اختلاف بین دو آبجکت تاریخ یا زمان را بخواهیم محاسبه کنیم خروجی از نوع کلاس timedelta خواهد بود و متد های این کلاس برای خروجی قابل استفاده استfrom datetime import datetime, date  
t1 = date(year = 2021, month = 8, day = 16) 
t2 = date(year = 2021, month = 12, day = 23) 
t3 = t1 - t2
 
print(&amp;quott3 =&amp;quot, t3)  

print(&amp;quottype of t3 =&amp;quot, type(t3))خروجی t3 = -129 days, 0:00:00type of t3 = &lt;class &#039;datetime.timedelta&#039;&gt;از جمله متدهای کلاس timedelta می توان به total_seconds اشاره کرد که اختلاف بین دو آبجکت را به صورت ثانیه برمی گرداندfrom datetime import datetime, date   t1 = date(year = 2021, month = 8, day = 16)  t2 = date(year = 2021, month = 12, day = 23)  t3 = t1 - t2

print(t3.total_seconds( ))خروجی -11145600.0امیدوارم این مقاله برای شما مفید واقع شودمنابعمقاله اولمقاله دوم</description>
                <category>احمد سراجی</category>
                <author>احمد سراجی</author>
                <pubDate>Mon, 16 Aug 2021 19:20:48 +0430</pubDate>
            </item>
                    <item>
                <title>ساخت اولین ویو در جنگو</title>
                <link>https://virgool.io/@amirahmad.seraji1996/%D8%B3%D8%A7%D8%AE%D8%AA-%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D9%88%DB%8C%D9%88-%D8%AF%D8%B1-%D8%AC%D9%86%DA%AF%D9%88-naszgwn3z2bj</link>
                <description>ایجاد پروژه  برای شروع یک پوشه با نام  myproject  می سازیم که فایل های پروژه در آن قرار می گیرد. اولین مورد در شروع کار با جنگو ساخت یک محیط مجازی یا virtual environment است. محیط مجازی ابزاری است که به ما کمک می کند تا وابستگی های پروژه های مختلف پایتون را به صورت مجزا از هم نگهداری کنیم. نصب محیط مجازی در لینوکس با استفاده از pippython3 -m pip install --user virtualenvنصب محیط مجازی در ویندوز با استفاده از pippy -m pip install --user virtualenvبعد از نصب محیط مجازی ترمینال را در مسیر پوشه myproject باز میکنیم و به صورت زیر یک محیط مجازی می سازیمنحوه ساخت محیط مجازی سپس باید این محیط مجازی را فعال کنیم. فعال سازی محیط مجازی در ویندوزvenv\Scripts\activateفعال سازی محیط مجازی در لینوکسsource  venv/bin/activateحال درون محیط مجازی به نصب ابزار های مورد نیاز می پردازیم نصب جنگو در لینوکس و مک  با استفاده از pippython -m pip install Djangoنصب جنگو در ویندوز با استفاده از pippy -m pip install Djangoسپس  اولین پروژه خود را با استفاده از فرمان زیر ایجاد کنیمdjango-admin startproject config .یک پروژه با نام config با استفاده از دستور بالا ساختیم. اگر با دستور ls محتویات پوشه myproject را بگیریم مشاهده می کنیم که پوشه ای به نام config و یک فایل با نام manage.py در کنار venv که پوشه محیط مجازی ما است؛ اضافه شده اند. ساختار پوشه config به صورت زیر استmyproject/
    manage.py
    config/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.pymanage.pyیک فایل پایتون است که به شما اجازه می دهد از طریق خط فرمان از راه های مختلف  پروژه خود را مدیریت کنید. به عنوان مثال با دستور زیر می توانید پروژه را اجرا کنیددر لینوکسpython manage.py runserverدر ویندوزpy manage.py runserver اگر بعد از اجرای فرمان بالا به آدرس لوکال هاست سیستم خود و روی پورت ۸۰۰۰ به صورت localhost:8000 در مرورگر مراجعه کنید با صفحه زیر روبرو خواهید شد.ساخت اولین اپ و ویوبرای ساختن یک اپ جدید در پروژه از فرمان زیر استفاده می کنیمدر لینوکسpython manage.py startapp blogدر ویندوزpy manage.py startapp blogبا استفاده از فرمان بالا یک ا\ به نام blog ساختیم که به ساختار پروژه یک پوشه به نام blog با محتویات آن به صورت زیر اضافه شده است.blog/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.pyابتدا باید این اپ را به پروژه اضافه کنیم. برای این منظور در پوشه config وارد فایل settings شده و درون این فایل در  INSTALED APP که یک لیست پایتونی است اپ blog را به صورت زیر اضافه می کنیمINSTALLED_APPS = [    &#039;django.contrib.admin&#039;,    &#039;django.contrib.auth&#039;,    &#039;django.contrib.contenttypes&#039;,    &#039;django.contrib.sessions&#039;,    &#039;django.contrib.messages&#039;,    &#039;django.contrib.staticfiles&#039;,    &#039;blog.apps.BlogConfig&#039;,]مرحله بعدی انجام  makemigration و migrate است که باعث ثبت مدل های ایجاد شده یا تغییرات آنها در schema دیتابیس می شود. اما در ابتدای ایجاد هر پروژه نیاز است که این دستورات اجرا شود.در لینوکسpython manage.py makemigrationspython manage.py migrateدر ویندوزpy manage.py makemigrationspy manage.py migrateدر پوشه blog یک فایل با نام urls.py می سازیم که وظیفه مدیریت url های هر ا‍پ و نمایش ویو های مربوط با هر url را دارد اما ابتدا این فایل را در فایل urls.py اصلی پروژه که در پوشه config قرار دارد include کنیم. محتویات فایل urls.py l موجود در پوشه config به صورت زیر استfrom django.contrib import adminfrom django.urls import pathurlpatterns = [    path(&#039;admin/&#039;, admin.site.urls),]مشاهده می شود که از django.urls فقط path ایمپورت شده است اما نیاز است که include را نیز از همین مسیر امپورت کنیم به صورت from django.urls import path, includeسپس به لیست urlpatterns که از قبل url های ‍پنل ادمین در آن ثبت شده است یک path جدید برای url های اپ blog اضافه می کنیم urlpatterns = [    path(&#039;admin/&#039;, admin.site.urls),
    path(&#039;blog/&#039;, indclude(&amp;quotblog.urls&amp;quot)),]در ادامه درون فایل views.py در ‍پوشه blog شروع یه ساخت یک ویو می کنیم که در ساده ترین حالت یک تابع به صورت زیر است from django.shortcuts import renderfrom django.urls import HttpResponse# Create your views here.def index(request):	return HttpResponse(&amp;quotHello, World!&amp;quot)یک تابع ساختیم و request را به آن پاس دادیم و سپس HttpResponse را ایمپورت و با استفاده از آن عبارت Hello world را return کردیم. در آخرین قدم در فایل urls.py که در همین پوشه ایجاد کردیم به صورت زیر یک route  را به این ویو اختصاص می دهیمfrom django.url import pathfrom .views import index urlpatterns = [	path(&amp;quot&amp;quot, index, name=&amp;quotindex&amp;quot),]تبریک!، شما اولین ویو خود را در جنگو ساختینبا اجرای پروژه با استفاده از دستور runserver و رفتن به localhost:8000/blog عبارت Hello, World را مشاهده می کنیم.</description>
                <category>احمد سراجی</category>
                <author>احمد سراجی</author>
                <pubDate>Sat, 14 Aug 2021 23:39:34 +0430</pubDate>
            </item>
            </channel>
</rss>