我有数据存储在Django模型中,我想在HTML文件中显示这些数据。我能做到这一点最简单的方法是什么?我很熟悉这个问题,但它对我没有帮助,因为它不是很详细,也没有确切的答案。有人能帮帮我吗?我的代码在下面。
Django模型:class userdetails(models.Model):
donations = models.IntegerField(blank=True, null = True,)
points = models.IntegerField(blank=True, null = True,)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
blank=True,
null=True,
)
HTML,我想在其中显示来自模型的数据:
<div class="box">
<span class="value"> </span>
<span class="parameter">Points</span>
</div>
这是我的观点:
@login_required(login_url='/login/')
def dashboard(request):
id = request.user.id
data= userdetails.objects.get(id=id)
return render(request,'dashboard.html',{'data':data})
我不断得到的错误:
DoesNotExist at /dashboard/
userdetails matching query does not exist.
在我看来,这与data= userdetails.objects.get(id=id)
有关。
您需要创建一个视图来从模型中检索所需的数据:
views.py:
from .models import userdetails
from django.shortcuts import render
def get_data(request):
my_data = userdetails.objects.all() #for all the records
one_data = userdetails.objects.get(pk=1) # 1 will return the first item change it depending on the data you want
context={
'my_data':my_data,
'one_data':one_data,
}
return render(request, 'get_data.html', context)
将视图添加到urls.py:
url.py:
from .views import get_data
urlpatterns = [
path('get_data/', get_data, name='get_data'),
]
在templates文件夹中创建get_data.html:
get_data.html:用于列表
{% block content %}
{% for x in my_data %}
{{x.name }}
{% endfor %}
{% endblock content %}
对于项目:
{% block content %}
{{one_data}}
{% endblock content %}
最好的做法是创建一个列表视图和一个细节视图,所以如果你不知道如何告诉我,我会给你看
您需要向views.py文件添加一个函数,并将HTML文件呈现到URL模式中应该存在的URL。
例如:这是一个示例模型:
class C(models.Model):
name = models.CharField(max_length=125, null=True)
phone = models.CharField(max_length=125, null=True)
date_created = models.DateTimeField(auto_now_add=True, null=True)
def __str__(self):
return self.name
这是我的观点.py
from .models import *
def home(request):
c = C.objects.all()
return render(request, "<app_name>/index.html", {'c': c})
这是我的urls.py
from . import views
urlpatterns = [
path('home/',views.home),
]
这是我的HTML文件的一部分,我将在其中显示数据
{% block content %}
<h2>{{c.name}}</h2>
{% endblock content %}