Django ile blog oluşturma:
DjangoGirls 2020 Trabzon için oluşturulmuştur.
Kurulum aşaması:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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:
1 |
INSTALLED_APPS += 'post', |
Modelimizi Oluşturuyoruz:
1 2 3 4 5 6 7 8 9 10 11 |
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:
1 2 |
python manage.py makemigrations python manage.py migrate |
Admin sayfasına modelimizi kaydediyoruz:
1 2 3 4 |
from django.contrib import admin from .models import Article admin.site.register(Article) |
View’imizi yazalım:
1 2 3 4 5 6 7 |
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:
1 2 3 4 5 |
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:
1 2 |
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:
1 |
TEMPLATES += 'DIRS': [os.path.join(BASE_DIR, 'templates')], |
‘templates’ klasöründe ‘base.html’ diye bir dosya oluşturalım:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!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:
1 2 3 4 5 6 7 8 9 |
{% extends "base.html" %} {% block content %} <h1>Articles:</h2> {% for publisher in object_list %} <h2>{{ publisher.title }}</h2> <p>{{ publisher.description }}</p> {% endfor %} {% endblock %} |