Pinax源代码分析13 - bookmarks

Pinax源代码分析13 bookmarks

第三方app Django_bookmarks

url

    (r'^bookmarks/', include('bookmarks.urls')),

逻辑与模板

urlpatterns = patterns('',
    #
显示所有的书签

    url(r'^$', 'bookmarks.views.bookmarks', name="all_bookmarks"),
    #
用户的书签列表
    url(r'^your_bookmarks/$', 'bookmarks.views.your_bookmarks', name="your_bookmarks"),
    #
添加书签
    url(r'^add/$', 'bookmarks.views.add', name="add_bookmark"),
    #
删除书签
    url(r'^(/d+)/delete/$', 'bookmarks.views.delete', name="delete_bookmark_instance"),
    
    # for voting
    (r'^(?P<object_id>/d+)/(?P<direction>up|down|clear)vote/?$',
        vote_on_object, dict(
            model=Bookmark,
            template_object_name='bookmark',
            template_name='kb/link_confirm_vote.html',
            allow_xmlhttprequest=True)),
)

感觉这个app功能不全,不能浏览单独的bookmark,不能修改。一旦写错了就只能删除之后再重新创建。
urlpatterns
的最后一行使用的是Django_votingview

bookmarks.html
模板使用了voting app 定义的 voting_tags misc app 定义的 extra_voting_tags
{% extends "bookmarks/base.html" %}

{% load voting_tags %}
{% load extra_voting_tags %}
 
               {% order_by_votes bookmarks %}

        {% votes_by_user user on bookmarks as vote_dict %}

        {% scores_for_objects bookmarks as score_dict %}
       
                        {% dict_entry_for_item bookmark from vote_dict as vote %}
                        {% dict_entry_for_item bookmark from score_dict as score %}

                            <a id="up_{{ bookmark.id }}" href="#" οnclick="vote({{ bookmark.id }}, '{% if vote and vote.is_downvote %}clear{% else %}up{% endif %}'); return false;"><img src="{{ MEDIA_URL }}bookmarks/img/up_{% if vote and vote.is_upvote %}mod{% else %}grey{% endif %}.png"/></a><br />
                        {% endif %}
                        <span id="bookmark_{{ bookmark.id }}_score">
                            {{ score.score|default:0 }} point{{ score.score|default:0|pluralize }}
                        </span><br />
                        {% if user.is_authenticated %}
                            <a id="down_{{ bookmark.id }}" href="#" οnclick="vote({{ bookmark.id }}, '{% if vote and vote.is_upvote %}clear{% else %}down{% endif %}'); return false;"><img id="img_{{ bookmark.id }}_down" src="{{ MEDIA_URL }}bookmarks/img/down_{% if vote and vote.is_downvote %}mod{% else %}grey{% endif %}.png"/></a>
                        {% endif %}
   
以上自定义标签除了 order_by_votes misc 提供之外,全都是 voting提供的,每个标签都有 docstring

url
最后一行中的 template_name='kb/link_confirm_vote.html', 没有找到这个模板,但是投票功能一切运行正常。根据 voting.views.vote_on_object docstring
    The given template will be used to confirm the vote if this view is fetched using GET;
可见,如果是采用get方法投票的话,才需要这个模板。而bookmarks使用的是jquery $.post 提交的请求,方法为POST,所以就不需要这个模板了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值