[英]Django DetailView Not Getting Data From Model
我正在使用Django 1.8和Python版本2.7.3
我正在學習本教程,因為我還是Django的新手。
我能夠從教程中創建示例站點,並決定使用教程中的功能來創建自己的站點。 我正在制作的網站是雜工的簡單搜索網站。 我的問題是我無法讓DetailView從數據庫中提取信息,但是當我將其作為ListView並在for循環中調用該信息時,我可以獲得它來提取信息。 我已經遍歷了教程文件和我正在創建的站點的文件,因為這在教程站點上可以很好地工作,希望我只是跳過一些簡單的事情。
這是我的文件:
urls.py :
from django.conf.urls import patterns, include, url
from django.views.generic import ListView, DetailView
from search.models import People
urlpatterns = patterns('',
url(r'^$', ListView.as_view(
queryset=People.objects.all(),
template_name="search.html")),
url(r'^(?P<pk>\d+)$', DetailView.as_view(
model=People,
template_name="single.html")),
url(r'^results/$', ListView.as_view(
queryset=People.objects.all().order_by("-name")[:5],
template_name="results.html")),
)
models.py
from django.db import models
# Create your models here.
class People(models.Model):
name = models.TextField()
occupation = models.TextField()
contact = models.TextField()
def __unicode__(self):
return self.name
views.py
from django.shortcuts import render
# Create your views here.
base.html
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<!--header file-->
<head>
<title>Handyman Search</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="{% static "css/bootstrap.min.css" %}">
<!-- Optional theme -->
<link rel="stylesheet" href="{% static "css/bootstrap-theme.min.css" %}">
</head>
{% block content %}
{% endblock %}
search.html
{% extends "base.html" %}
{% load staticfiles %}
{% block content %}
<!--start of body-->
<div class="container" align="center" style="padding-top:180px">
<img src="{% static "images/hammer.jpeg" %}" class="img-responsive">
</div>
<div class="container" style="padding-top:50px">
<div class="row">
<div class="col-lg-10 col-sm-push-1">
<form role="search" action="results">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search for..." id="searchquery">
<span class="input-group-btn">
<button class="btn btn-primary" type="submit" href="results">Search</button>
</span>
</div><!-- /input-group -->
</form>
</div><!-- /.col-lg-6 -->
</div><!-- /.row -->
</div><!--container-->
</body>
<!-- end of body file -->
</html>
{% endblock %}
results.html
{% extends "base.html" %}
{% load staticfiles %}
{% block content %}
<!--start of body-->
<div class="container">
<div class="row">
<div class="col-xs-1" style="min-height:80px; min-width:90px">
<img src="{% static "images/hammer.jpeg" %}" class="img" width="100%" style="min-height:80px; min-width:80px">
</div>
<div class="col-lg-10" style="padding-top:20px">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search for...">
<span class="input-group-btn">
<button class="btn btn-primary" type="button">Search</button>
</span>
</div><!-- /input-group -->
</div><!-- /.col-lg-6 -->
</div><!-- /.row -->
</div><!--container-->
<!--results-->
<div class="container fluid" style="padding-top:80px">
<div class="row">
<div class="span6" style="float: none; margin: 0 auto;">
<div class="panel panel-primary">
<!-- Default panel contents -->
<div class="panel-heading">Results</div>
<!-- List group -->
<ul class="list-group">
{% for post in object_list %}
<li class="list-group-item"><a href="/search/{{post.id}}">{{ post.occupation }}</a></li>
{% endfor %}
</ul>
</div>
</div>
</div>
</div>
<!--results end-->
{% endblock %}
single.html
{% extends "base.html" %}
{% load staticfiles %}
{% block content %}
<!--start of body-->
<div class="container">
<div class="row">
<div class="col-xs-1" style="min-height:80px; min-width:90px">
<img src="{% static "images/tux.jpeg" %}" class="img" width="100%" style="min-height:80px; min-width:80px">
</div>
<div class="col-lg-10" style="padding-top:20px">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search for...">
<span class="input-group-btn">
<button class="btn btn-primary" type="button">Search</button>
</span>
</div><!-- /input-group -->
</div><!-- /.col-lg-6 -->
</div><!-- /.row -->
</div><!--container-->
<!--results-->
<div class="container fluid" style="padding-top:80px">
<div class="row">
<div class="span6" style="float: none; margin: 0 auto;">
<div class="panel panel-primary">
<!-- Default panel contents -->
<div class="panel-heading"> {{ post.name }} </div>
<div class="panel-body">
<p>{{ post.occupation }}
<br/><br/><br/><br/><br/></p>
<p style="text-align:center"><small><a href="#">{{ post.contact }}</a></small></p>
</div>
</div>
</div>
</div>
</div>
<!--results end-->
{% endblock %}
當我搜索此特定問題時,我發現很多人都張貼了views.py,但是我重新觀看了本教程,但我從未編輯過views.py,但它在本教程中仍然有效,因此我不確定100%出了什么問題。
非常感謝您的幫助,或者如果您需要查看,請告訴我。
您沒有將任何稱為“發布”的內容傳遞到詳細信息模板。 Django默認情況下將使用模型的小寫名稱,因此您可以將模板更改為使用“ people”,也可以在視圖/ URL中定義context_object_name
使其更合適。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.