Search code examples
djangopython-3.xdetailview

Trying to create a DetailView page in Django


I used Django to create a blog and i want to display a single post on page when i click on a post title and no matter of the used method i cannot display anything on the page.

My Views:

class One_Per_Page(DetailView):
   model = AboutMe
   objects = AboutMe(id)

   def oneperpage(request):
      entry = One_Per_Page.objects.get_queryset(pk=AboutMe.id)
      #entries = super(One_Per_Page).get_queryset()
      return render_to_response('blog/aboutme_detail.html', {'AboutMe': entry})

this is the URL i use:

url(r'^(?P<pk>\d+)$', One_Per_Page.as_view(), name='oneperpage

this is the html page that must display a single post when the title of it is cliked:

<!DOCTYPE html>
<html lang="en">

<head>
    <title>EBA</title>
    <meta charset="utf-8"/>
    <link rel="stylesheet" href="/static/css/styles.css" type="text/css">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>


<body class="body">
<header class="mainHead">
    <img src="/static/img/mainlogo.png" %} width="700" height="144" %}>
    <nav>
        <ul>
            <li><a href='/'>Home</a></li>
            <li><a href='/blog/'>Blog</a></li>
            <li><a href='{{ STATIC_URL }}/latestnews/'>News</a></li>
            <li><a href='{{ STATIC_URL }}/archive/'>Archive</a></li>
        </ul>
    </nav>
</header>

{% block content %}

    <div>
        <article>
            <h4>{{ entry.titleMe }}</h4>
                <p class="postInfo">
                    on {{ entry.dateMe }}
                </p>

            <div class="typicalArticle">
                {{ entry.contentMe|safe|linebreaks }}
            </div>
        </article>
    </div>
{% endblock %}


<footer class="mainFooter">
    <p> copyright &copy; 2015</p>
</footer>

</body>
</html>

Can anyone help me to do this right?


Solution

  • I dont know what error you are getting but try this, actually you dont need to do much:

    url(r'^stuff/(?P<pk>\d+)/', One_Per_Page.as_view(
                template_name='detail.html'), name="detail")
    

    and

    class One_Per_Page(DetailView):
       model = AboutMe
    

    and in template, you have automatically object instance you can access like this:

    {{ object.name }}
    {{ object.biography }}