【发布时间】:2022-12-07 07:12:26
【问题描述】:
我只想在本地主机上显示一次数据,因为它会出现两次,无论我在哪里更改 data.py 并刷新页面,都会添加新的数据层。
所以如果数据是
titles = {
"data": [
{
"sid": "1234",
"name": "name_1"
},
{
"sid": "5678",
"name": "name_2"
},
{
"sid": "9012",
"name": "name_3"
}
]
}
那么它应该出现在输出中
SD Name
1234 name_1
5678 name_2
9012 name_3
所以如果我更改 data.py 文件中的数据
titles = {
"data": [
{
"sid": "0000",
"name": "name_1"
},
{
"sid": "12313",
"name": "name_2"
},
{
"sid": "543534",
"name": "name_3"
}
]
}
输出应该是这样的
SD Name
0000 name_1
12313 name_2
543534 name_3
当前输出是
SD Name
1234 name_1
5678 name_2
9012 name_3
0000 name_1
12313 name_2
543534 name_3
输出是添加以前的记录。我想要的是刷新后它应该出现在 data.py 文件中的当前数据
views.py
from django.shortcuts import render
from .models import Title
def get(request):
context = {'titles': Title.objects.all()}
return render(request, "home.html", context)
home.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>TableView - Startup</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h2 class="text-center"><u>Data</u></h2><br>
<table class="table table-dark table-striped">
<thead>
<tr>
<th>SD</th>
<th>Name</th>
</tr>
</thead>
<tbody>
{% for title in titles %}
<tr>
<td>{{title.sd}}</td>
<td>{{title.name}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
models.py
from django.db import models
from data import titles
class Title(models.Model):
sd = models.CharField(max_length=255)
name = models.CharField(max_length=255) # Read the JSON
# Create a Django model object for each object in the JSON
for title in titles['data']:
Title.objects.create(sd=title['sid'], name=title['name'])
data.py
titles = {
"data": [
{
"sid": "0000",
"name": "name_1"
},
{
"sid": "12313",
"name": "name_2"
},
{
"sid": "543534",
"name": "name_3"
}
]
}
``
【问题讨论】:
-
Title.objects.create(sd=title['sid'], name=title['name'])创建新的 Title 对象,它不会删除旧的。如果你想替换它们,你可以使用delete。 -
@raphael 谢谢先生。有效。我添加了这一行并在逻辑中相应地删除它并且它有效 Title.objects.all().delete()
-
但我还在等着看其他方法
标签: python-3.x django django-models django-rest-framework django-views