Django ile blog oluşturma:
DjangoGirls 2020 Trabzon için oluşturulmuştur.
Kurulum aşaması:
python3 -m venv myvenv # myvenv adında virtual env oluşturmak source myvenv/bin/activate # myvenv adındaki venvi çalıştırmak pip install Django~=2.2.4 # django kurulumu python --version #versionu kontrolü python # Python Version Kontrol import django django.VERSION # django version kontrolü exit() django-admin startproject mysite #proje oluşturma cd mysite python manage.py runserver #serveri başlat python manage.py startapp post # post diye bir uygulama oluşturur. python manage.py makemigrations python manage.py migrate python manage.py createsuperuser #admin oluşturur deactivate #venv çalışmasını durdur!
Uygulamamızı ayarlara ekliyoruz:
INSTALLED_APPS += 'post',
Modelimizi Oluşturuyoruz:
from django.db import models from django.utils import timezone from django.contrib.auth.models import User class Article(models.Model): author = models.ForeignKey(User, on_delete=models.CASCADE) title = models.CharField(max_length=50, blank=True) description = models.TextField(max_length=1000, blank=True) created_date = models.DateTimeField(default=timezone.now) def __str__(self): return self.title
Veritabanımızı yeniliyoruz:
python manage.py makemigrations python manage.py migrate
Admin sayfasına modelimizi kaydediyoruz:
from django.contrib import admin from .models import Article admin.site.register(Article)
View’imizi yazalım:
from django.shortcuts import render from django.views.generic import ListView from post.models import Article class ArticleList(ListView): queryset = Article.objects.order_by('-created_date') template_name = 'post_list.html'
Post Uygulamasında yeni urls.py açıp ekliyoruz:
from django.urls import path from post.views import ArticleList urlpatterns = [ path('', ArticleList.as_view()), ]
Ana dizindeki urls.py’a yeni urls.py’ı include edelim:
from django.urls import path,include urlpatterns += path('', include('post.urls')),
Ayarlara template adresimizi ekleyelelim ve ana dizinde ‘templates’ adında bir klasör oluşturalım:
TEMPLATES += 'DIRS': [os.path.join(BASE_DIR, 'templates')],
‘templates’ klasöründe ‘base.html’ diye bir dosya oluşturalım:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{% block title %}Django Auth Tutorial{% endblock %}</title> </head> <body> <main> {% block content %} {% endblock %} </main> </body> </html>
‘post_list.html’ dosyasını da oluşturalım:
{% extends "base.html" %} {% block content %} <h1>Articles:</h2> {% for publisher in object_list %} <h2>{{ publisher.title }}</h2> <p>{{ publisher.description }}</p> {% endfor %} {% endblock %}
Bir yanıt yazın