0

このチュートリアルを使用して簡単なブログを作成していますhttp://lightbird.net/dbe/blog.html 質問と対処したい問題があります。:]

問題は、私のブログがライトバードの例のブログのように見えないことです。2番目の問題は、bbase.htmlのこの構文{%url admin:index%}です。名前空間をadminとして登録しませんでしたが、namespace = 'メインURLのブログ'、この構文がどのように機能するのかわかりません{%url admin:index%}

ここに画像の説明を入力してください ここに画像の説明を入力してください

私の主なURLconfは:

 from django.conf.urls import patterns, include, url
 from django.contrib import admin
 from django.conf import settings
 admin.autodiscover()
 urlpatterns = patterns('',                  
     url(r'^admin/', include(admin.site.urls)),
     url(r'^cool/', include('blog.urls', namespace='blog')),

 )

私のブログのURLconfは次のとおりです。

from django.conf.urls import patterns,include,url
from django.contrib import admin
from django.conf import settings

urlpatterns = patterns('blog.views',
        url(r'^$','main', name='main'),

)

私のviews.py

from django.core.paginator import Paginator, InvalidPage, EmptyPage
from django.core.urlresolvers import reverse
from django.shortcuts import render_to_response
from blog.models import *

def main(request):
    """Main listing."""
    posts = Post.objects.all().order_by("-created")
    paginator = Paginator(posts, 2)

    try: page = int(request.GET.get("page", '1'))
    except ValueError: page = 1

    try:
        posts = paginator.page(page)
    except (InvalidPage, EmptyPage):
        posts = paginator.page(paginator.num_pages)

    return render_to_response("list.html", dict(posts=posts, user=request.user))

C:\ djcode \ mysite \ blog\templatesにある私のbbase.html

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head> <title>{% block title %}MyBlog{% endblock %}</title> </head>

 <body>
     <div id="sidebar"> {% block sidebar %} {% endblock %} </div>
     <div id="container">
         <div id="menu">
             {% block nav-global %}

                 <!-- MENU -->
                 <h3>MyBlog</h3>
                 {% if user.is_staff %}
                 <a href="{% url admin:index %}">Admin</a>
                 <a href="{% url admin:blog_post_add %}">Add post</a>
                 {% endif %}

             {% endblock %}
         </div>

         <div id="content">
             {% block content %}{% endblock %}
         </div>
     </div>

 </body>
 </html>

私のlist.html

{% extends "bbase.html" %}

{% block content %}
    <div class="main">

         <!-- Posts  -->
         <ul>
             {% for post in posts.object_list %}
                 <div class="title">{{ post.title }}</div>
                 <ul>
                     <div class="time">{{ post.created }}</div>
                     <div class="body">{{ post.body|linebreaks }}</div>
                 </ul>
             {% endfor %}
         </ul>

         <!-- Next/Prev page links  -->
         {% if posts.object_list and posts.paginator.num_pages > 1 %}
    <div class="pagination" style="margin-top: 20px; margin-left: -20px; ">
        <span class="step-links">
            {% if posts.has_previous %}
                <a href= "?page={{ posts.previous_page_number }}">newer entries &lt;&lt; </a>
            {% endif %}

            <span class="current">
                &nbsp;Page {{ posts.number }} of {{ posts.paginator.num_pages }}
            </span>

            {% if posts.has_next %}
                <a href="?page={{ posts.next_page_number }}"> &gt;&gt; older entries</a>
            {% endif %}
              </span>
          </div>
          {% endif %}

      </div>

{% endblock %}
4

1 に答える 1

3

urlタグは、アプリのビューに{% url admin:index %}リンクしています。次のパターンで管理URLを含めたため、管理名前空間は正しいです。indexadmin

url(r'^admin/', include(admin.site.urls)),

adminアプリの名前空間を設定していないため、デフォルトでになっていることに注意してくださいadmin

アプリのindexビューにリンクする場合は、を使用します。blog{% url blog:index %}

Djangoを初めて使用する場合は、URLパターンを含めるときに名前空間機能を無視することを個人的にお勧めします。異なるアプリの同じ名前の2つのビュー、または同じアプリの2つの異なるインスタンスを区別する場合に便利ですが、ここでは、不必要な混乱を引き起こしているようです。一方、私は常にURLパターンに名前を付けることをお勧めします。これにより、多くのURLパターンの問題が解決されます。

于 2013-02-16T09:49:22.417 に答える