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的简单封装
./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
发布文章:./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)
显示博客信息
$ python3 manage.py shell
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from django.contrib.auth.models import User
In [2]: from blog.models import BlogArticles
In [3]: user = User.objects.get(username="admin")
In [9]: blogs = BlogArticles.objects.all()
In [10]: blogs
Out[10]: <QuerySet [<BlogArticles: 飞机的速度比火车的速度的 10 倍还多 LENGTHKM1>, <BlogArticles: 汉语框架语义网(cfn)构建现状>, <BlogArticles: You Raise Me Up>]>
In [11]: for blog in blogs:
...: print(blog.title)
...:
飞机的速度比火车的速度的 10 倍还多 LENGTHKM1
汉语框架语义网(cfn)构建现状
You Raise Me Up
查询结果是一个有多个BlogArticles类的实例组成的序列对象,在Django中被称为QuerySet。
./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})
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")
]