裝飾器:
加入要給一些界面加一個登錄權(quán)限:
直接上代碼
在utils里面:
#裝飾器,判斷用戶是否登錄
def require_login(fn):
def inner(request,*args, **kwargs):
if request.session.has_key("loginUser"):
logging.warning("該用戶已經(jīng)登錄竣灌,視圖函數(shù)正常訪問")
return fn(request, *args, **kwargs)
else:
logging.warning("請先登錄D羯场!")
return render(request,"demo/login.html", {"msg": "當(dāng)前操作必須登錄初嘹,請先登錄系統(tǒng)"})
return inner
然后在views里面可以直接調(diào)用
分頁:
django提供了一個非常簡單的分頁方法及汉,直接上代碼:
from django.core.paginator import Paginator
def index(request):
# logger = logging.getLogger("django")
#logger.warning("首頁開始運行了……")
#在緩存中獲取數(shù)據(jù)
articles = cacheUtils.getAllArticle()
pageSize = int(request.GET.get("pageSize", settings.PAGE_SIZE))
pageNow = int(request.GET.get("pageNow", 1))
paginator = Paginator(articles, pageSize)
page = paginator.page(pageNow)
return render(request, "blog/index1.html", {"page": page, "pageSize": pageSize})
在前端界面上:
<div class="col-md-8">
<!--<div class="page-header">-->
<!--<h3>熱門文章 <small>這里能找到技術(shù)前沿的各位大神的文章內(nèi)容</small></h3>-->
<!--</div>-->
<div class="row author-article">
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="home">
{% for at in page.object_list %}
<div class="media">
<div class="media-body">
<h4 class="media-heading"><a href="{% url 'demo:show_article' at.id %}">{{at.title}}</a></h4>
{{at.content | safe}}
</div>
<div class="media-left media-middle">
<a href="#">
<img class="media-object " src="/static/demo/image/articles/1.jpg" alt="圖片">
</a>
</div>
<div class="media-bottom text-muted">
<span class="glyphicon glyphicon-eye-open">169</span>
<span class="glyphicon glyphicon-comment">18</span>
<span class="glyphicon glyphicon-heart">200</span>
<span> {{at.publishtime}}</span>
</div>
</div>
{% endfor %}
</div>
<nav aria-label="Page navigation">
<ul class="pagination">
{% if page.has_previous %}
<li>
<a href="/demo/index?page_now={{page.previous_page_number}}" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
{% endif %}
{% for p in page.paginator.page_range %}
<li><a href="/demo/index/?page_now={{p}}">{{p}}</a></li>
{% endfor %}
{% if page.has_next %}
<li>
<a href="/demo/index?page_now={{page.next_page_number}}" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
{% endif %}
</ul>
</nav>
</div>
</div>
</div>
基本上都是固定用法,可以直接照搬代碼屯烦。