zoukankan      html  css  js  c++  java
  • django-搭建BBS关键点总结

    0826自我总结

    django-搭建BBS关键点总结

    一.关于开口子,直接输入url访问文件内容

    django自带开了个口子是static文件可以直接访问到

    手动开口子

    urs.py

    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的特性

    三.验证码的生成

    https://www.cnblogs.com/pythonywy/p/11408318.html

    四.登入后的重要操作

    可以利用的auth模块中的login

    在登入成功的时候

    将uesr对象存放在request中方便后续操作

    auth.login(request,user)

    也可以在网页中完成是否登入的判断

    {% 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")
    
  • 相关阅读:
    HBase常用Shell命令
    在Eclipse中创建Maven多模块项目
    在IntelliJ IDEA中创建Maven多模块项目
    在IntelliJ IDEA中创建Web项目
    【Python】如何安装easy_install?
    RabbitMQ从入门到精通
    Erlang语言入门
    Eclipse背景颜色改动
    导出Excel1
    计算机概述
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11414750.html
Copyright © 2011-2022 走看看