创建项目
首先要在命令行创建Django项目:
$ django-admin startproject my_blog
初始化设置
在my_blog/my_blog/setting.py
中修改下面几个选项:
添加等待要创建的应用:
创建应用
现在来创建博客应用
进入刚刚创建的my_blog
项目后执行:
$ python manage.py startapp blog
可以看到已经创建了blog
应用
创建模型与数据库
使用mysql数据库
这个坑留着,先用自带的sqlite。
链接:https://blog.csdn.net/mildddd...
编写模型
打开my_blog/blog/models.py
添加如下内容:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class BlogType(models.Model):
type_name = models.CharField(max_length=50)
def __str__(self):
return self.type_name # 显示标题类型
class Blog(models.Model):
title = models.CharField(max_length=50) # 标题
blog_type = models.ForeignKey(BlogType,on_delete=models.DO_NOTHING) # 标题类型
author = models.ForeignKey(User,on_delete=models.DO_NOTHING) # 作者
content = models.TextField() # 文章内容
created_time = models.DateTimeField(auto_now_add=True) # 创建时间
last_updated_time = models.DateTimeField(auto_now_add=True) # 上一次更新时间
def __str__(self):
return "<Blog: %s>" % self.title # 显示标题
注意:想要应用同一文件的类,要把被引用的类放在应用这个类的类之前。例如这里要把BlogType
类放在Blog
类之前。
初始化数据库
先进行数据库迁移:
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
....
再来创建管理员:
$ python manage.py createsuperuser
:(输入用户名)root
:(输入邮箱)[[:blank:]] // 这里不需要可以直接空格
:(输入密码) zxc123456 // 太简单的密码不允许
:(重复密码) zxc123456
Superuser created successfully.
然后创建数据库:
$ python manage.py makemigrations
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model Blog
- Create model BlogType
- Add field blog_type to blog
编写管理界面
编辑my_blog/blog/admin.py
:
from django.contrib import admin
from .models import Blog,BlogType # 引入模型
@admin.register(BlogType)
class BlogTypeAdmin(admin.ModelAdmin):
list_display = ('id','type_name') # 显示的内容
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
list_display = ('title','blog_type','author','created_time','last_updated_time') # 显示的内容
编写视图
编写my_blog/blog/views.py
:
from django.shortcuts import render_to_response, get_object_or_404
from .models import Blog # 引入models.py文件下的Blog模型
def blog_list(request):
context = {}
context['blog'] = Blog.objects.all() # 博客列表
return render_to_response('blog_list.html',context)
def blog_detail(request,blog_pk):
context = {}
context['blog'] = get_object_or_404(Blog,pk=blog_pk) # 博客内容
return render_to_response('blog_detail.html',context)
然后在blog
目录下创建一个templates
的文件夹,视图都将存放在里面。在里面创建blog_detail.html
和blog_list.html
。blog_detail.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{{ blog.title }}</title>
</head>
<body>
<div>
<a href="{% url 'home' %}">
<h3>My Blog</h3>
</a>
</div>
<h3>{{ blog.title }}</h3>
<p>{{ blog.content }}</p>
</body>
</html>
blog_list.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My Blog</title>
</head>
<body>
{% for blog in blogs %}
<a href="{% url 'blog_detail' blog.pk %}">
<h3>{{ blog.title }}</h3>
</a>
<p>{{ blog.content }}</p>
{% endfor %}
</body>
</html>
编写访问路径
在my_blog/blog/
目录下创建urls.py
:
from django.urls import path
from . import views
urlpatterns = [
# http://localhost:8000/blog/#
path('<int:blog_pk>',views.blog_detail,name="article_detail"),
]
再去my_blog/my_blog/urls.py
中设置:
启动服务器
然后可以进管理界面查看效果了:
$ python manage.py runserver
浏览器输入:
http://127.0.0.1:8000/admin
输入刚刚的账号和密码
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。