如何解决Django - 无法在页面上显示值
我无法在主页上显示来自数据库的值。我无法弄清楚我做错了什么。以下是我的html
HTML
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js" async></script>
</head>
<div class="container">
{% for manhour in manhours %}
<div class="article-Metadata">
<a class="mr-2" href="#">{{ manhour.station }}</a>
<small class="text-muted">{{ manhour.date|date:"F d,Y" }}</small>
</div>
<h2><a class="article-title" href="{% url 'manhour-detail' manhour.id %}">{{ manhour.station }}</a></h2>
{% endfor %}
</div>
<div class="user_panel">
<a href="/logout">logout</a>
</div>
<div class="user_panel">
<a href="/manhour/new">Upload</a>
</div>
</html>
view.py
# Create your views here.
from django.shortcuts import render,redirect
from django.contrib.auth.mixins import LoginrequiredMixin,UserPassesTestMixin
from django.views.generic import (
ListView,DetailView,CreateView,UpdateView,DeleteView
)
from .form import InputForm
from manhour.models import ManHour
from django.contrib.auth.forms import UserCreationForm,AuthenticationForm
from django.contrib import messages
from django.contrib.auth import login,logout,authenticate
from django.urls import reverse
def login_request(request):
if request.method == 'POST':
form = AuthenticationForm(request=request,data=request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username,password=password)
if user is not None:
login(request,user)
messages.info(request,f"You are Now logged in as {username}")
return redirect('manhour-home')
else:
messages.error(request,"Invalid username or password.")
else:
messages.error(request,"Invalid username or password.")
else:
form = AuthenticationForm()
return render(request = request,template_name = "manhour/login.html",context={"form":form})
class PostListView(LoginrequiredMixin,ListView):
model = ManHour
template_name = 'manhour/home.html' # <app>/<model>_<viewtype>.html
context_object_name = 'manhour'
# ordering = ['-date']
class PostDetailView(LoginrequiredMixin,DetailView):
model = ManHour
urls.py
from django.contrib import admin
from django.urls import path
# from manhour.views import login_request
from manhour.views import (
PostListView,PostDetailView,PostCreateView,PostUpdateView,login_request
)
from django.contrib.auth.views import logoutView
urlpatterns = [
path('admin/',admin.site.urls),path('login/',login_request,name='login'),path('',path('manhour/',PostListView.as_view(),name='manhour-home'),path("logout/",logoutView.as_view(),name="logout"),path('manhour/new/',PostCreateView.as_view(),name='manhour-create'),path('manhour/<int:pk>/',PostDetailView.as_view(),name='manhour-detail'),path('manhour/<int:pk>/update/',PostUpdateView.as_view(),name='manhour-update'),]
谁能指出为什么我不能在我的 manhour-home
页面上列出所有值?在主页上,我可以看到运行正常的 logout
和 upload
按钮。但是我无法在主页上查看数据库中的所有对象。
def home(request):
context = {
'manhour': ManHour.objects.all()
}
return render(request,'manhour/home.html',context)
解决方法
您尚未定义需要在视图中显示的内容。您可以为视图定义 queryset 属性,也可以定义 get_queryset() 方法。
,您的上下文对象名称错误,在视图中您使用的是“工时”,而在您的主页模板中您使用的是“工时”。
所以,我认为这应该解决它。
def home(request):
context = {
'manhours': ManHour.objects.all()
}
return render(request,'manhour/home.html',context)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。