1. 程式人生 > >9.29博客項目叠代1.2

9.29博客項目叠代1.2

ror 路由 down rbo 睡覺 對象 pre fir 手動更新

2018-9-29 21:41:02

放上github網站 https://github.com/TrueNewBee/bbs_demo

忙了一下午,不同的bug采坑 最後還是弄完了!

貼上筆記 項目放在了github

1. form組件梳理
    
    註冊功能:
        1. 利用form組件生成HTML代碼
        2. 使用AJAX提交數據,並且在頁面顯示錯誤信息
        3. 後端還是使用form做校驗

    額外補充:
        滑動驗證碼
        前端預覽頭像
        

2. 站點主頁
    - Django admin簡單使用
        
1. 告訴admin 我有哪一些表 1. 在app/admin.py文件中,把表註冊一下 2. 只有超級用戶才能登陸admin管理後臺 3. blank=True 控制django admin 可以不填 parent_comment = models.ForeignKey("self", null=True, blank=True) # 在Django admin裏面可以不填
4. 對於局部鉤子 一定要有返回值, 
        比如確認email ,就得return email
            
# 重寫email字段的局部鉤子 def clean_email(self): email = self.cleaned_data.get("email") is_exist = models.UserInfo.objects.filter(email=email) if is_exist: # 表示郵箱已註冊 self.add_error("email", ValidationError("郵箱已被註冊")) else: return email

auth模塊再講解
詳見今天auth_demo示例代碼

import os


if __name__ == __main__:
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bbs.settings")

    import django
    django.setup()

    from blog import models

    # 基於對象的查詢 SQL: 子查詢
    # a1 = models.Article.objects.first()
    # print(a1.user.avatar, type(a1.user))
    #
    # # 基於QuerySet查詢, SQL: join連表查詢
    # a2 = models.Article.objects.filter(pk=1)
    # print(a2.values("user__avatar"))


    # 查詢a1對應的評論數
    ret = models.Article.objects.first().comment_set.all()
    print(ret)
        5. 把Django 的admin設置為中文
            # 更改admin的編碼
            # LANGUAGE_CODE = ‘en-us‘
            LANGUAGE_CODE = zh-hans
        
    - Bootstrap布局
        - 2 8 2布局
        
        - media的配置
            # Django用戶上傳的豆角media文件
            MEDIA_URL = "/media/"
            # media配置, 用戶上傳的文件都默認放在這個文件夾下
            MEDIA_ROOT = os.path.join(BASE_DIR, "media")

            # 需要在url中加上下面一段話
            # media相關的路由設置 
            url(r^media/(?P<path>.*)$, serve, {"document_root": settings.MEDIA_ROOT}),
    
    - ORM查詢操作
        - 基於對象的查詢
        - 基於QuerySet的查詢
        
        當查詢比寫入操作多的時候,我們盡量減少跨表查詢,節省時

間。
        文章表的評論數據和點贊踩滅數據 是通過額外字段寫在文章

表裏的
    class Article(models.Model):
        # 評論數
    comment_count = models.IntegerField(verbose_name="評論數")
    # 點贊數
    up_count = models.IntegerField(verbose_name="點贊數", default=0)
    #
    down_count = models.IntegerField(verbose_name="", default=0)    

    # 不過需要手動更新 下次介紹

    3.在models裏面 在各個class下設置 class Meta 可在Django admin頁面顯示中文
    class Article2Tag(models.Model):
    """
    文章和標簽的多對多關系表
    """
    nid = models.AutoField(primary_key=True)
    article = models.ForeignKey(to="Article", to_field="nid")
    tag = models.ForeignKey(to="Tag", to_field="nid")

        class Meta:
            unique_together = (("article", "tag"),)
            verbose_name = "文章-表簽"
            verbose_name_plural = verbose_name

--------------------------------明天內容 ----------------------------    

3. 個人主頁
    - 分組、聚合
    - extra()  --> 執行SQL語句

好了 明天繼續叠代!!睡覺覺啦!忙了一下午!

9.29博客項目叠代1.2