django基础
安装
以管理员身份运行cmd
pip3 install django
创建一个项目
django-admin startproject mysite
1 | mysite/ |
- manage.py:【固定】用于启动项目
- mysite/
- asgi.py【固定】接受网络请求
- wsgi.py【固定】接受网络请求
- urls.py【固定】URL和函数的对应关系
- settings【固定】项目配置文件
创建app
1 | python3.9 manage.py startapp app01 |
1 | │ admin.py 【固定】django默认提供的后台管理 |
- 注册app:在mysite/settings.py中注册app
1 | INSTALLED_APPS = [ |
- 配置url,编写视图函数
启动程序
python manage.py runserver
启动成功
如果想再加页面,只要再添加一个url,再填写一个视图函数即可
模板
目前我们只能返回一个文本,如果我们想返回一个html文件
views.py内使用render返回页面名称
app下创建templates\页面
url.py配置路由
静态文件的加载
在app目录下创建static文件夹,用于存放静态文件
如果后续会对statics文件夹名称进行修改,则需配置动态路由。(若修改文件夹名称为static)
配置方法:
- settings.py内添加:
STATIC_URL = '/static/'
- html模板添加:
{% load static %}
- 引用文件时的写法:eg:
<img src="{% static 'img/i.jpg' %}" alt="">
后端对接口的调用:
view.py url.py templates 浏览器映射关系
数据库
虚拟环境中安装mysqlclient
pip install mysqlclient
ORM可以帮助我们
- 创建、修改、删除数据库中的表【无法创建数据库】
- 操作表中的数据
创建数据库
- 启动MySQL,
mysql -u root -p
show databases;
create database <数据库名> DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
use <数据库名>
show tables
发现是空的
连接数据库
settings配置数据库:
1 | DATABASES = { |
django操作表
- 创建表
- 删除表
- 修改表
移步models.py
1 | from django.db import models |
SQL语句:(未经ORM转换之前)
1 | create table app_userInfo( |
python manage.py makemigrations
python manage.py migrate
此处把userInfo打错了
查看第一个表
desc app_usertnfo
其他的表的来源:源于django提供的其他默认的app,生成了其他的默认功能的表
添加表,只要在models里面添加类,再执行两条语句即可
删除表,删除类
添加已经存在的表的列:(表里可能有数据)
选择一:终端给这一列添加值
选择二:在类给新列添加默认值:eg:
age = models.IntegerField(default=2)
选择三:允许新列为空:eg:
age = models.IntegerField(null=True,blank=True)
操作表中的数据
1 | UserTnfo.objects.create(name="feather",password = "12345",age=19) |
mysql启动失败
Can’t connect to MySQL server on ‘localhost:3306’ (10061)
密码:12345
以管理员身份运行CMD
任务管理器内启动mySQL服务
Django前后端分离
安装和配置 Django REST framework:
安装了 Django REST framework。
1
pip install djangorestframework
在
settings.py
文件中添加'rest_framework'
到INSTALLED_APPS
配置项中,以启用 DRF。创建模型:
创建一个模型来表示你的表。这个模型将定义表的结构和字段。例如:
1
2
3
4
5
6from django.db import models
class YourModel(models.Model):
field1 = models.CharField(max_length=100)
field2 = models.IntegerField()
# 添加其他字段...创建序列化器:
创建一个序列化器,将模型数据转换为 JSON 或其他适当的格式。创建
serializers.py
,定义一个序列化器类:1
2
3
4
5
6
7from rest_framework import serializers
from .models import YourModel
class YourModelSerializer(serializers.ModelSerializer):
class Meta:
model = YourModel
fields = '__all__'创建 API 视图:
在
views.py
文件中创建一个 API 视图来处理对表数据的请求。可使用 DRF 的通用视图类来简化这个过程:1
2
3
4
5
6
7pythonfrom rest_framework import generics
from .models import YourModel
from .serializers import YourModelSerializer
class YourModelList(generics.ListAPIView):
queryset = YourModel.objects.all()
serializer_class = YourModelSerializer设置 URL 路由:
urls.py
中,设置 URL 路由以映射请求到相应的 API 视图:1
2
3
4
5
6pythonfrom django.urls import path
from . import views
urlpatterns = [
path('api/your-model/', views.YourModelList.as_view(), name='your-model-list'),
]这将允许前端应用访问 API 数据的 URL。
运行开发服务器:
运行 Django
1
python manage.py runserver
前端项目调用 API:
前端项目可以使用 JavaScript Fetch API、Axios 或其他 HTTP 客户端库来调用 API。在前端项目中使用 API URL 来获取表的内容:
1
2
3
4
5
6
7
8
9
10
11const apiUrl = 'http://localhost:8000/api/your-model/';
fetch(apiUrl)
.then(response => response.json())
.then(data => {
// 处理从 API 获取到的数据
console.log(data);
})
.catch(error => {
console.error('API 请求错误:', error);
});
这些步骤将帮助你创建一个 API,使前端能够获取到表的内容,并以 JSON 或其他格式返回数据。