django-搭建BBS關鍵點總結

0826自我總結

django-搭建BBS關鍵點總結

一.關於開口子,直接輸入url訪問文件內容

django自帶開了個口子是static文件能夠直接訪問到html

手動開口子python

urs.pydjango

from django.views.static import serve


urlpatterns = [
    url(r'^avatar/(?P<path>.*)', serve, kwargs={'document_root': 開口文件的路徑}),
]
#這裏的r'^avatar/(?P<path>.*),前面的路徑等同於後面設置的路徑,而下面正則匹配的內容爲內容的拼接前面的就是完整的一個路徑,這樣就能夠url直接訪問文件夾

二.關於登入驗證碼中解決併發的問題

解決方法:將code存在session中瀏覽器

注意點:若是同時在一個瀏覽器中打開兩個相同的網頁,他的code之後的那個網站爲準,這是session的特性session

三.驗證碼的生成

http://www.javashuo.com/article/p-kiuvqrln-hd.html併發

四.登入後的重要操做

能夠利用的auth模塊中的loginapp

在登入成功的時候函數

將uesr對象存放在request中方便後續操做網站

auth.login(request,user)url

也能夠在網頁中完成是否登入的判斷

{% if request.user.is_authenticated %}

完成註銷操做

auth.logout(request)

五.表單的查找

#查詢當前站點下全部標籤對應的文章數

#查詢當前站點下全部分類對應的文章數
# 查詢全部分類對應的文章數
# 分組查詢固定規則:
# filter 在annotate前表示where條件
# values 在annotate前表示group by
# filter 在annotate後表示having條件
# values 在annotate後表示取值
# category_ret=models.Category.objects.all().values('pk').annotate(cou=Count('article__nid')).values('title','cou')
# 查詢當前站點下全部分類對應的文章數
category_ret=models.Category.objects.all().filter(blog=blog).annotate(cou=Count('article__nid')).values_list('title','cou','nid')
print(category_ret)
# 查詢當前站點下全部標籤對應的文章數
tag_ret=models.Tag.objects.all().filter(blog=blog).annotate(cou=Count('article__nid')).values_list('title','cou','nid')
print(tag_ret)
#查詢某年某月下對應的文章數

'''
            from django.db.models.functions import TruncMonth
            Sales.objects
            .annotate(month=TruncMonth('timestamp'))  # Truncate to month and add to select list
            .values('month')  # Group By month
            .annotate(c=Count('id'))  # Select the count of the grouping
            .values('month', 'c')  # (might be redundant, haven't tested) select month and count

    '''
year_ret=models.Article.objects.all().annotate(month=TruncMonth('create_time')).values('month').annotate(c=Count('nid')).values_list('month','c')

關鍵點:

  • 主鍵能夠直接縮寫成pk
  • 關於annotate
    • 只要是兩個 model 類經過 ForeignKey 或者 ManyToMany 關聯起來,那麼就可使用 annotate 方法來統計數量。
    • annotate(字段名稱=聚會函數)
    • annotate 前面有values時候,主要是加快的查詢的速度,values中必需要有annotate的依據

六.自定義文件夾存儲路徑

settings.py

#加這兩句,之後再上傳的圖片,都放在media文件夾下
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
# MEDIA_ROOT = os.path.join(BASE_DIR, "app01")
相關文章
相關標籤/搜索