用html显示Django模型数据的最简单方法



我有数据存储在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 %}

最新更新