Django项目的创建
- setting.py文件
配置html文件存放的位置
配置静态文件存放的位置 - Templates
存放HTML文件的配置
Base_DIR是你的项目的根目录路径 - static静态文件
存放css/js/图片 - 出现403报错
注释掉setting.py带有csrf的那一行,大概46
登录的完整示例
form表单往后端提交数据需要注意哪三点:
- form不是from,所有获取用户输入的标签都应该放在form里面,并且必须要有name属性
- action属性控制往哪提交,method一般都设置成post
- 提交按钮必须是type=submit,不能是别的类型
get请求:
- 浏览器请求一个页面
- 搜索引擎检索关键字的时候
post请求:
- 浏览器向服务器提交数据,比如登录、注册等
render字符串替换:
- html内:
<p class="text-danger text-center">{{ error }}</p>
#两个花括号表示的值,为传过去的变量名 - 函数内:
error_msg = ""#初始化error_msg
if email == "alex@123.com" and pwd == "123"
return HTTPResponse("登录成功")
else:
error_msg = "邮箱或密码错误"
return render(request,"login.html",{"error":error_msg})
redirect跳转
回复一个特殊的响应,这个响应会让用户的浏览器请求指定的URL
redirect("http://baidu.com")
Django中的APP
方便我们在一个大的Django项目中,管理实现不同的业务功能,在创建APP是,在django项目的根目录中写入app的名字
ORM
ORM的对应关系
类---------->数据表
对象------->数据行
属性------->字段
ORM能做的事
- 操作数据表----->创建表/删除表/修改表
- 操作数据行----->数据的增删改查
- 不能创建数据库,需要自己动手创建
使用Django的ORM详细步骤
- 自己动手创建数据库
create database 数据库名; - 告诉Django连接哪一个数据库
在Django项目中设置连接数据库的相关配置
DATABASES = {
'default': {
#连接的数据库类型
'ENGINE': 'django.db.backends.mysql',
#连接数据库的地址
'HOST':'127.0.0.1',
#端口
'PORT':3306,
#数据库名称
'NAME': "mysitedb",
#用户
'USER':'root',
#密码
'PASSWORD':'123456'
}
}
- 连接MySQL数据库
在项目目录/init.py文件中:
import pymysql
#告诉django用pymysql来代替默认的MySQLdb
pymysql.install_as_MySQLdb()
- 在app下面的models.py文件中定义一个类,这个类必须继承models.Model
class 类名(models.Model):
- 执行两个命令
python3 manage.py makemigrations
python3 manage.py migrate
利用ORM实现查询的操作
- urls定义一个路径和函数的对应关系
urlpatterns = [
path('login/', views.login),
path('userlist/', views.user_list),
]
- views:
def user_list(request):
#去数据库中查询所有的用户
#利用ORM这个工具去查询数据库,不用自己去查询
ret = models.UserInfo.objects.all()#[UserInfo Object,UserInfo Object]
print(ret[0].id,ret[0].name)
#打开user_list.html文件,进行字符串的替换
return render(request,"user_list.html",{"user_list":ret})
- user_list.html:
<table border="1">
<thead>
<tr>
<th>id值</th>
<th>用户名</th>
</tr>
</thead>
<tbody>
{% for user in user_list %}
<tr>
<td>{{ user.id }}</td>
<td>{{ user.name }}</td>
</tr>
{% endfor %}
</tbody>
</table>
利用ORM实现添加的操作
添加用户的函数,数据库中的id要设为自增
def add_user(request):
if request.method == "POST":
#用户填写了新的用户名,并发送了POST请求过来
new_name = request.POST.get("username",None)
#去数据库中新创建一条用户记录
models.UserInfo.objects.create(name=new_name)
#添加成功后,直接跳转到用户列表页
return redirect("/user_list/")
#第一个请求页面的时候,就返回一个页面,页面上有两个框让用户填写
return render(request,"add_user.html")
数据库中的对应关系梳理
- 数据表对应类
- 数据库表中的每一个字段对应类的每一个属性
- 数据表中的一条记录对应类的一个实例化对象