vscode搭建Django环境三:django自带后台管理系统、模版渲染以及使用mysql数据库

1、django自带的后台管理系统

1.1、建表

打开myappmodels.py,添加以下内容

from django.db import models

# Create your models here.
class Article(models.Model):
    title = models.CharField('标题', max_length=256)
    content = models.TextField('内容')
    time = models.DateTimeField()

接下来需要同步数据库,只需要两行命令。

python .\manage.py makemigrations
python .\manage.py migrate

在这里插入图片描述

这时候会发现根目录下多了一个db.sqlite3的文件,打开是乱码,没错这就是刚刚新建的表。以文本的形式存储在根目录下。还需要一步操作,打开myapp目录下的admin.py,添加如下内容,用后台管理系统来管理刚创建的表。

from django.contrib import admin
from myapp.models import Article

# Register your models here.
class ArticleAdmin(admin.ModelAdmin):
    list_display = ['title', 'content', 'time']

admin.site.register(Article, ArticleAdmin)

2、后台管理系统

django的后台管理系统已经很完善了,我们需要做的就是创建一个账号,登录,操作,没有其他了,不需要自己写任何东西。

创建账号

python manage.py createsuperuser

在这里插入图片描述

上面提示弱密码,根据自己的需要进行设置即可

admin的url已经默认存在,到这里直接运行项目即可访问Django后台

from django.contrib import admin
from django.urls import path
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='index')
]
python .\manage.py runserver

在浏览器地址栏输入http://127.0.0.1:8000/admin

在这里插入图片描述

输入刚创建好的账号和密码登录

在这里插入图片描述

这就是刚创建的表,点击添加我们来添加一组数据。

在这里插入图片描述
在这里插入图片描述

3、模版渲染

3.1 直接将数据渲染到页面

有了数据就要显示在前端,这就要用到模版渲染,首先需要在渲染模版的时候把数据一起返回,打开myapp目录下的views.py

from django.shortcuts import render
from myapp.models import Article
# Create your views here.

def index(request):
    article_list = Article.objects.all()
    return render(request, 'index.html', {
    
    'article_list': article_list})

templates目录下的index.html需要修改如下,这里用到了djangojanja2渲染模版的语法。

<html>
<head>
    <title>test</title>
</head>
<body>
    {
    
    % for article in article_list %}
    <h1>{
    
    {
    
     article.title }}</h1>
    <span>{
    
    {
    
     article.time }}</span>
    <p>{
    
    {
    
     article.content }}</p>
    {
    
    % endfor %}
</body>
</html>

刷新浏览器

在这里插入图片描述

3.2 数据传递给js

有时候数据需要做一些处理再渲染到页面,这就要先把数据给js,具体操作方法和直接渲染其实差不多。

index.html里加上这句代码

<script>
    let articleList = {
    
    {
    
     article_list | safe }};
    console.log(articleList)
</script>

修改views的代码

from django.shortcuts import render
from myapp.models import Article
import json
from django.core import serializers
from django.core.serializers.json import DjangoJSONEncoder
# Create your views here.


def index(request):
    article_list = serializers.serialize('python', Article.objects.all())
    return render(request, 'index.html', {
    
    'article_list': json.dumps(article_list, cls=DjangoJSONEncoder)})

刷新浏览器

在这里插入图片描述

4、数据库

4.1、查看当前数据库

django自带的是sqlite数据库,如果不想用,可以换成mysql、mongodb或者其他想用的,这里以mysql为例。首先看一下我们的数据库结构。

在vscode中安装sqlite插件

在这里插入图片描述

右键sqlite数据库,新建查询

在这里插入图片描述

输入查询内容,使用.help查看帮助,.databases查看数据库,使用.tables查看表,右键选择运行查询即可看到结果

select * from myapp_article

在这里插入图片描述

4.2、切换mysql数据库

新建一个django_test数据库

mysql> create database django_test;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;

切换到刚才新建的数据库,里边是空的没有表

mysql> use django_test;
Database changed

mysql> show tables;
Empty set (0.00 sec)

Django使用mysql我们需要安装一个pymysql

pip3 install pymysql

安装之后打开mysite目录下的_init_.py,添加两行代码

# sqlite3
DATABASES = {
    
    
    'default': {
    
    
        # 'ENGINE': 'django.db.backends.sqlite3',
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_test',
        'USER': 'root',
        'PASSWORD': '你的密码',
        'HOST': '你的主机名',
        'PORT': '3306',
        # 'NAME': BASE_DIR / 'db.sqlite3',
    }
}

同步数据库

python manage.py makemigrations
python manage.py migrate

在这里插入图片描述

然后开启服务,刷新127.0.0.1:8000发现数据没有了,打开后台管理用之前的账户密码登录也不能登录,说明已经切换到mysql,表都是空的,没有数据,我们看以下刚刚新建的django_test:

在这里插入图片描述

和之前我们看sqlite的表一样,重复之前后台管理有关的操作,发现没有什么区别一样可以操作数据,切换完成。

猜你喜欢

转载自blog.csdn.net/weixin_43883625/article/details/129791875