点击进入我的个人博客
将后台的数据展现到前台 的 简单例子
def index(request):
l = [
{'msg':"llallala",'username':'不知道'},
{'msg':"sdfa",'username':'知道'},
]
return render(request,"templates/templates_learn_test/templates_file.html", {'card': l})
下方是对应views.py 文件的html文件内容.
{% for i in card %}
<div class="card">
<div class="msg">{{ i.msg }}</div>
<div class="username">{{ i.username }}</div>
</div>
{% endfor %}
如果有多个盒子且盒子里面的内容不一样, 那么循环的是盒子,
如果循环数据,则可能出现覆盖现象.
将前端展示的数据替换成从数据库中查询到的数据
- 创建模型
- 添加数据
- 查询数据
1 创建模型
------------------>在应用目录的 models.py 文件中操作
from django.contrib.auth.models import User
from django.db import models
class Card(models.Model):
msg = models.CharField(max_length=100)
user = models.ForeignKey(User , on_delete= models.CASCADE)
2 添加数据
--------------------------------->获得的数据添加到后台 在应用目录的admin.py 文件中进行注册
from django.contrib import admin
from the_10.models import Card
class CardAdmin(admin.ModelAdmin):
fieldsets = [
("用户",{'fields':['user']}),
("信息",{'fields':['msg']})
]
list_display = ['user','msg']
admin.site.register(Card,CardAdmin) '''这一行代码 和第2行代码 才是真正的注册,
但是为了让数据在后台好看,
所以,自己定义并且注册了CardAdmin
'''
3 在views.py查询
from django.http import HttpResponse
from django.shortcuts import render
from the_10.models import Card
def index(request):
card = Card.objects.all()
return render(request,"在模板templates中的html的路径", {'cards': card})
'''第9 行代码中的左边的cards 将会映射到 写好的html中, 这里就是自己起的名字cards
右边的card是 第8 行代码中的变量card.
4. 对HTML进行挖坑
- 在保存html文件的地方创建
base.html 文件,将想要继承的html内容保存到此文件中 - 挖坑
注: 一定要将html文件放在template文件夹的中, 以对应的应用目录名字命名的文件夹中. 否则,可能找不到
{% extends '要继承的base.html文件地址' %}
{% block content %}
{% for i in cards %}
<div class="cards">
<div class="msg">{{ i.user.username }}</div>
<div class="username">{{ i.msg }}</div> '''
msg 是定义完models.py 文件后,
进行二次迁移,生成的表里找到的,
所以 不用指定表名, 直接用了字段
但是上方的username这个字段就需要指定表名user.
'''
</div>
{% endfor %}
{% endblock content %}
|