is a learning project steps by Django Girls
- create project folder
mkdir djangogirl && cd djangogirl
- install django globaly
pip install django==2.1.7
- install MySQL dependency
pip install mysqlclient
- start django project
django-admin.py startproject mysite .
- config setting for connect to MySQL
mysite/settings.conf
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangogirls',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
- migrate project to database
python manage.py migrate
- create an app
python manage.py startapp blog
- add blog to setting
mysite/settings.conf
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog'
]
- add post model
blog/models.py
from django.conf import settings
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
- create migrate from model for blog
python manage.py makemigrations blog
- migrate blog
python manage.py migrate blog
- add post to
blog/admin.py
from django.contrib import admin
from .models import Post
admin.site.register(Post)
- create a supperuser for admin connection
python manage.py createsuperuser
- run server
python manage.py runserver 127.0.0.1:8000
- Deployment on PythonAnyWhere ( Wiki | DjangoGirls )
- create a new route for our blog on
mysite/urls.py
from django.contrib import admin
from django.urls import path
from django.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
- ok we see we add blog.urls so we need create or edit
blog/urls.py
as
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list')
]
- we doesn't have any post_list function on views so we need create a one on
blog/views.py
from django.shortcuts import render
# Create your views here.
def post_list(request):
return render(request, 'blog/post_list.html', {})
- so we can create a html as post_list.html for view in
blog/templates/blog
directory - for add static files Read this doc
- for deploy on Pythonanywhere.com about static files Read this doc ; I had to copy statics files form ./blog/static/blog to ./static/blog it was easier to me
- WE ARE HERE ON TUTORIAL