安装django
- pip install django
pycharm下的django项目
-
django-admin startproject
-
完成相关配置 (项目名/settings.py文件)
1. Templates(存放HTML文件的配置) <-- 告诉Django去哪儿找我的HTML文件 'DIRS': [os.path.join(BASE_DIR, 'templates')], 2. 静态文件(css/js/图片) # 静态文件保存目录的别名 STATIC_URL = '/static/' # 所有静态文件(css/js/图片)都放在我下面你配置的文件夹中 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ] 3. 注释掉setting.py中 带有 csrf 的那一行(大概45~47行)
-
运行项目:python manage.py runserver
-
创建app:python3 manage.py startapp app名字
什么是APP?以及为什么要用APP? project --> 项目 APP --> 应用 方便我们在一个大的Django项目中,管理实现不同的业务功能. app配置修改(setting.py中) INSTALLED_APPS = [ # 告诉程序我安装了一个app 'firstapp.apps.FirstappConfig']
-
介绍几个文件:
1 urls.py: 记录的是路由与函数的对应关系,告诉服务器不同的路由内容去哪个函数中找
2 app/views.py: 记录所有的函数
3 app/models.py: 记录所有的类
ORM
-
ORM的对应关系: 用面向对象的方法使用数据库
类 ---> 数据表 对象 ---> 数据行 属性 ---> 字段
-
使用Django的ORM详细步骤:
1. 自己动手创建数据库 create database 数据库名; 2. 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库) # 数据库相关的配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 连接的数据库类型 'HOST': '127.0.0.1', # 连接数据库的地址 'PORT': 3306, # 端口 'NAME': "day61", # 数据库名称 'USER': 'root', # 用户 'PASSWORD': '123456' # 密码 } } 3. 告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库 在项目/__init__.py文件中,写下面两句: import pymysql # 告诉Django用pymysql来代替默认的MySQLdb pymysql.install_as_MySQLdb() 4. 在app下面的models.py文件中定义一个类,这个类必须继承models.Model class 类名(models.Model): ... 5. 执行两个命令 1. python3 manage.py makemigrations 2. python3 manage.py migrate
出现的两个问题
-
ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
-
AttributeError: ‘str’ object has no attribute 'decode’
感谢博主的好文章
解答见:文章https://blog.csdn.net/qq_37067475/article/details/90115641
表的增删查
创建了两个页面:一个是查询数目名称。另外一个添加数目名称
-
在urls.py中增加两个路由:
path(‘add_book/’, views.add_book),
path(‘book_list/’, views.book_list) -
写HTML页面,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>书单</title>
</head>
<body>
<table>
<thead>
<tr>
<td>书id</td>
<td>书名</td>
</tr>
</thead>
<tbody>
{% for i in books %}
<tr>
<td>{{i.id}}</td>
<td>{{i.title}}</td>
</tr>
{% endfor %}
</tbody>
<a href="/add_book/">添加书单</a>
</table>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加书目</title>
</head>
<body>
<form action="" method="POST">
<p>书名:
<input type="text" name="book">
</p>
<p><input type="submit" value="提交"></p>
</form>
</body>
</html>
- 增加函数页面
def book_list(request):
ret = models.Book.objects.all()
return render(request, 'book_list.html', {'books': ret})
def add_book(request):
if request.method == 'POST':
new_title = request.POST.get('book')
models.Book.objects.create(title=new_title)
return redirect('/book_list/')
return render(request, 'add_book.html')