1.后端跳转到前端:
return render(request, template_name="details.html", context={"objects": objects,"message":message})
2.后端视图跳转到视图:
return redirect("/login") #不传参
message = "您不是管理员"
redirect_url = f"/allobjects/?message={message}"
return HttpResponseRedirect(redirect_url) #传参方法
3.前端跳转到后端:
<a href="/deleteinfo/?uid={{ info.id }}"></a>
4.前端接收后端数据:
{% for object in objects %} {{ object.src }} {% endfor %}
{% if message %} {{message}} {% endif %}
5.路由 (在Django中,路由名和方法名是分开存放的,路由和方法集中绑定在urls.py中):
path("goumai/", views.goumai) #第一个参数是路由名,第二个参数是目录.方法名
6.session会话:
request.session["uid"]=id
id=request.session.get("uid")
del request.session["uid"]
7.数据库:
数据库连接:
#在settings.py中
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':"django",
"USER": "root",
"PASSWORD": "123456",
"HOST":"127.0.0.1",
"PORT" :3306
}
}
#Django中可自动创建表(首先得自己创建数据库) 在model层自己写字段名等信息
class user(models.Model):
username=models.CharField(max_length=255)
password = models.CharField(max_length=255)
src = models.CharField(max_length=255)
address = models.CharField(max_length=255)
#写完后在 运行manage.py任务 中依次执行 makemigration migrate
#对数据库的增删改查
#增加:
shopedobjects.objects.create(uid=uid,oid=oid,name=objects[0].name,introduce=objects[0].introduce,price=objects[0].price,src=objects[0].src,number=number,type=objects[0].type)
#删除:
deleteobject=carobjects.objects.filter(Q(uid=uid)&Q(oid=oid))
deleteobject.delete()
#修改:
users = user.objects.filter(id=uid)
users.update(username=name,password=password,address=address,src=src)
#查询:
carobjects.objects.filter(Q(uid=uid)&Q(oid=oid)).all() #返回值是一个Queryset集合
carobjects.objects.filter(Q(uid=uid)&Q(oid=oid)).first() #返回集合中的第一个对象
#如查询中出现并列条件用上 Q(uid=uid)&Q(oid=oid)
或者条件用上 Q(uid=uid)|Q(oid=oid)
8.文件问题(前端表单接收文件保存到编译器,然后显示到前端):
前端表单:
<form action="/monitor_addobjectsinfo/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file" placeholder="请输入用户头像"><br>
<input type="submit" value="提交">
</form>
后端代码:
src = request.FILES.get("file") #接收文件
path = "app/static/images/" + src.name
with open(path, "wb") as f:
for line in src:
f.write(line) #以二进制的形式保存文件到path路径中
srcpath = "/static/images/" + src.name #这个是文件的路径名