创建项目

首先要在命令行创建Django项目:

$ django-admin startproject my_blog

初始化设置

my_blog/my_blog/setting.py中修改下面几个选项:

clipboard.png

添加等待要创建的应用:

clipboard.png

创建应用

现在来创建博客应用
进入刚刚创建的my_blog项目后执行:

$ python manage.py startapp blog

可以看到已经创建了blog应用

clipboard.png

创建模型与数据库

使用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 # 显示标题

clipboard.png

注意:想要应用同一文件的类,要把被引用的类放在应用这个类的类之前。例如这里要把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')  # 显示的内容

clipboard.png

编写视图

编写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.htmlblog_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"),
]

clipboard.png

再去my_blog/my_blog/urls.py中设置:

clipboard.png

启动服务器

然后可以进管理界面查看效果了:

$ python manage.py runserver

浏览器输入:

http://127.0.0.1:8000/admin

输入刚刚的账号和密码


BrownFly
18 声望1 粉丝

信息安全协会成员、Vidar-Team成员