跟老齐学Django 1

https://www.djangoproject.com/

pip install Django==1.11.1

import django

print(django.get_version())
创建一个Django项目:django-admin startproject mysite

python3 manage.py runserver

创建应用:python3 manage.py startapp blog

manage.py是对django-admin的简单封装

跟老齐学Django 1

./mysite/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

./blog/models.py

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User

# Create your models here.
class BlogArticles(models.Model):
	title = models.CharField(max_length=300)
	author = models.ForeignKey(User, related_name="blog_posts", on_delete=models.DO_NOTHING)
	body = models.TextField()
	publish = models.DateTimeField(default=timezone.now)

	class Meta:
		ordering = ("-publish",)

	def __str__(self):
		return self.title

创建数据库表的文件:python3 manage.py makemigrations

python3 manage.py sqlmigrate blog 0001

真正创建数据库:python3 manage.py migrate

创建超级管理员:python3 manage.py createsuperuser

python3 manage.py runserver

http://127.0.0.1:8000/admin

发布文章:./blog/admin.py

from django.contrib import admin
from .models import BlogArticles
# Register your models here.
admin.site.register(BlogArticles) #将类加入当前环境

http://127.0.0.1:8000/admin/blog/blogarticles/ 添加文章

pip3 install pytz 用于django.utils.timezone

./blog/admin.py

from django.contrib import admin
from .models import BlogArticles
# Register your models here.
class BlogArticlesAdmin(admin.ModelAdmin):
	list_display = ("title", "author", "publish")
	list_filter = ("publish", "author")
	search_fields = ("titles", "body")
	raw_id_fields = ("author",)
	date_hierarchy = "publish"
	ordering = ['publish', 'author']
admin.site.register(BlogArticles, BlogArticlesAdmin)

显示博客信息

跟老齐学Django 1

./blog/views.py

from django.shortcuts import render
from .models import BlogArticles
# Create your views here.
def blog_title(request):
	blogs = BlogArticles.objects.all()
	return render(request, "blog/titles.html", {"blogs":blogs})

跟老齐学Django 1

mysite/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls', namespace="blog")),
]

blog/urls.py

from django.conf.urls import url, re_path
from . import views
app_name = 'blog'

urlpatterns = [
	#url(r'^$', views.blog_title, name="blog_titles")
	re_path('$', views.blog_title, name="blog_titles")
]