安装Django
pip install django==5.0.3 ,
安装pycharm专业版
命令行方式创建:打开终端,使用命令:django-admin startproject 【项目名称】
即可创建。
django-admin startproject first_project
python manage.py startapp [app名称]
创建一个app。使用pycharm创建
运行django项目
python manage.py runserver 0.0.0.0:8080
urlpatterns = [
path('admin/', admin.site.urls),
path('book/',views.book_detail_query_string),
# 如果输入book_id是一个非整形,会出现404错误: book/abc
# 在视图函数中得到的book_id就是一个整型,否则,默认是str类型
# 除了int类型,还有str,slug,uuid,path类型
path('book/<int:book_id>',views.book_detail_path)
]
# 1. http://127.0.0.1:8080/book?id=2
def book_detail_query_string(request):
# request.GET = {'id':3}
book_id = request.GET.get('id')
print(request.GET)
return HttpResponse("图书的id是"+book_id)
# http://127.0.0.1:8080/book/2
def book_detail_path(request,book_id):
return HttpResponse(f"您查找的图书id是{book_id}")
path函数
path() 可以接收四个参数,两个必选参数:route,view 两个可选参数:kwargs name
<int:my_variable>
,以从 URL 中捕获参数并将其传递给视图函数。安装MySQL驱动
pip install PyMySQL
在Django的工程同名的子目录的__init__.py
文件中添加如下语句
from pymysql import install_as_MySQLdb
install_as_MySQLdb() # 让pymysql以MySQLDB的运行模式和Django的ORM对接运行
修改database配置信息settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1', # 数据库主机
'PORT': 3306, # 数据库端口
'USER': 'root', # 数据库用户名
'PASSWORD': '123', # 数据库用户密码
'NAME': 'student' # 数据库名字
}
}
注意 如果想打印orm转换过程中的sql,需要在settings中进行如下配置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level':'DEBUG',
},
}
}
(1)生成迁移文件
所谓的迁移文件, 是类似模型类的迁移类,主要是描述了数据表结构的类文件.
python manage.py makemigrations
(2)同步到数据库中
python manage.py migrate
补充:在django内部提供了一系列的功能,这些功能也会使用到数据库,所以在项目搭建以后第一次数据迁移的时候,会看到django项目中其他的数据表被创建了。其中就有一个django内置的admin站点管理。(这个后面会写)
class Book(models.Model):
name = models.CharField(max_length=20,null=False)
desc = models.charField(max_length=100,name='description')
class Meta:
db_table = 'book_model'
ordering = ['_create_time','name']
以下将对Meta中的一些配置做解释:
db_table: 数据库表名
ordering:设置在提取数据的排序方式