1、django自带的后台管理系统
1.1、建表
打开myapp
下models.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
需要修改如下,这里用到了django
的janja2
渲染模版的语法。
<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的表一样,重复之前后台管理有关的操作,发现没有什么区别一样可以操作数据,切换完成。