صفحه اصلی در جنگو

django add main index page
20 آبان 1403

جنگو یکی از محبوب‌ترین فریم‌ورک‌های توسعه وب به زبان پایتون است که توسعه‌دهندگان بسیاری به خاطر سرعت و قابلیت‌های پیشرفته‌اش آن را انتخاب می‌کنند. یکی از اولین کارهایی که هنگام ساخت یک پروژه جنگو انجام می‌دهید، ایجاد صفحه اصلی (index page) است. این صفحه به عنوان نمای اصلی سایت شما عمل می‌کند و معمولاً شامل لینک‌ها و اطلاعاتی ابتدایی درباره سایت شما می‌باشد.

برای افزودن یک صفحه اصلی در جنگو، ابتدا باید یک view ایجاد کنید. View در حقیقت تابع یا کلاسی است که یک HttpResponse برمی‌گرداند. معمولاً این response شامل یک template HTML است که در آن محتوای صفحه را نشان می‌دهید.

گام بعدی ایجاد یک URL pattern است که صفحه اصلی را به یک آدرس URL مشخص متصل می‌کند. این کار با استفاده از فایل urls.py انجام می‌شود. شما می‌توانید دقیقاً مشخص کنید که با وارد کردن چه آدرسی در مرورگر، کاربر به صفحه اصلی هدایت شود.

در نهایت، باید template خود را بسازید. Templates به شما امکان می‌دهند به طور موثر مطالب ایستا را به همراه داده‌های داینامیک نمایش دهید. این کار با استفاده از زبان قالب‌نویسی جنگو که شبیه HTML است، انجام می‌شود.

حال بیایید به هر یک از این مراحل نگاهی بیندازیم و کدی که باید نوشته شود را بررسی کنیم:

# views.py
from django.shortcuts import render

def index(request):
    return render(request, 'index.html')

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

# index.html
<!DOCTYPE html>
<html>
<head>
    <title>صفحه اصلی</title>
</head>
<body>
    <h1>به سایت من خوش آمدید</h1>
    <p>این صفحه نخست سایت است.</p>
</body>
</html>

توضیح مرحله به مرحله کد

def index(request):
این تابع view برای مدیریت درخواست‌های مربوط به صفحه اصلی استفاده می‌شود.

return render(request, 'index.html')
این خط از کد template مربوط به index.html را رندر کرده و به‌عنوان response به کاربر برمی‌گرداند.

path('', views.index, name='index')
این بخش در urls.py نشان می‌دهد که URL ریشه سایت (مثلا www.example.com) به view مربوط به صفحه اصلی متصل می‌شود.

HTML اشاره‌شده در index.html یک قالب ساده که حاوی متن و یک عنوان است.

سوالات متداول

؟

چگونه می‌توانم یک صفحه اضافی به جنگو اضافه کنم؟

؟

آیا می‌توانم از HTML خالص در جنگو استفاده کنم؟

؟

چرا باید از جنگو استفاده کنیم؟