个人页面展示

个人页面展示:

django后台管理:

后台管理:
	django admin 后台管理
	xadmin 组件(有bug)--》公司
    
-->添加用户数据,修改数据,删除数据

如何用:
	1.在应用中的admin.py注册要管理的表(模型类)
	from app01 import models
    admin.site.register(models.xxx)  # xx : 表名(类)
    
	2.登录后台管理---》超级用户(root权限)
		createsuperuser
        
注意: admin会自动给所有的注册了的模型表 加一个s后缀

admin特性: admin会自动给注册了的模型表自动生成增删改查四条url

eg: http://127.0.0.1:8000/admin/app01/userinfo/  查
		http://127.0.0.1:8000/admin/app01/userinfo/3/change/ 改http://127.0.0.1:8000/admin/app01/userinfo/3/delete/ 删
http://127.0.0.1:8000/admin/app01/userinfo/add/ 增

admin数据录入的顺序:(以外键多的切入)
	

路由分发本质:

路由分发本质:
url(r'^index/',([
	 url(r'^index_1/',([
           url(r'^index_1_1/',([
                ],None,None))
         

@property   #源码
def urls(self):         
	return self.get_urls(), 'admin', self.name
           r'^index_1_1/', None,None 


数据暴露:

数据暴露: 
   前端想要后端服务器上文件的数据,就必须要后端开一个接口,要手动开设后端资源,但是也将该文件夹下所有的文件都暴露了(***)

#  eg:  谨慎使用
1.	url(r'^app01/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT})
         
# 2. settings内设置 :
        MEDIA_ROOT = os.path.join(BASE_DIR,'app01')
    
# media配置  能够将用户上传的所有的文件都统一指定的文件夹下
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

文件上传:

用户文件上传文件:
	1.settings内配置:
    MEDIA_ROOT = os.path.join(BASE_DIR,'media')
   media配置  能够将用户上传的所有的文件都统一指定的文件夹下

	2.应用文件自动创建media文件夹,并把之前创建的avatar文件夹放入media文件夹下

https://shazhenyu.blog.csdn.net/article/details/83104653
   python处理excel文件(优良博客)

站点样式:

#个人站点样式展示:

from django.db.models.functions import TruncMonth 

def site(request,username,**kwargs):
    user_obj = models.Userinfo.objects.filter(username=username).first()
    blog = user_obj.blog
    if not user_obj:  # 404页面
        return render(request,'error.html')
    # 有当前用户所有的文章
    article_list = models.Article.objects.filter(blog=blog)

    if kwargs:
        condition = kwargs.get('condition')
        param = kwargs.get('param')
        if condition == 'category':
            # 按照分类晒选
            article_list = article_list.filter(category_id=param)
        elif condition == 'tag':
            # 按照标签晒选
            article_list = article_list.filter(tags__id=param)
        else:
            year, month = param.split('-')
            article_list = article_list.filter(create_time__year=year,create_time__month=month)
    # 1.查询当前用户每一个分类及分类下的文章数
    category_list = models.Category.objects.filter(blog=blog).annotate(num=Count('article')).values_list('name','num','pk')


    # 2.查询当前用户每一个标签级标签下的文章数
    tag_list = models.Tag.objects.filter(blog=blog).annotate(num=Count('article')).values_list('name','num','pk')

    # 3.按照年月分组
    date_list = models.Article.objects.filter(blog=blog).annotate(month=TruncMonth('create_time')).values('month').annotate(num=Count('pk')).values_list('month','num')


    return render(request,'site.html',locals())


# site.html 
--->html页面展示:

        <div class="col-md-3">
            <div class="panel panel-primary">
              <div class="panel-heading">
                <h3 class="panel-title">文章分类</h3>
              </div>
              <div class="panel-body">
                  {% for category in category_list %}
                      <p><a href="/{{ username }}/category/{{ category.2 }}/">{{ category.0 }}({{ category.1 }})</a></p>
                  {% endfor %}

              </div>
            </div>
            <div class="panel panel-danger">
              <div class="panel-heading">
                <h3 class="panel-title">文章标签</h3>
              </div>
              <div class="panel-body">
                    {% for tag in tag_list %}
                      <p><a href="/{{ username }}/tag/{{ tag.2 }}/">{{ tag.0 }}({{ tag.1 }})</a></p>
                  {% endfor %}
              </div>
            </div>
            <div class="panel panel-warning">
              <div class="panel-heading">
                <h3 class="panel-title">日期归档</h3>
              </div>
              <div class="panel-body">
                    {% for date in date_list %}
                        <p><a href="/{{ username }}/archive/{{ date.0|date:'Y-m' }}/">{{ date.0|date:'Y年m月' }}({{ date.1 }})</a></p>
                    {% endfor %}

              </div>
            </div>
        </div>
     <div class="col-md-9">
            {% for article in article_list %}
                <div class="media">
                <h4 class="media-heading"><a href="#">{{ article.title }}</a></h4>
                  <div class="media-left media-middle">
                    <a href="#">
                      <img class="media-object" src="/media/{{ article.blog.userinfo.avatar }}/" alt="..." height="60">
                    </a>
                  </div>
                  <div class="media-body">
                      {{ article.desc }}
                  </div>

                    <br>
                    <div class="pull-right">
                        <span>posted&nbsp;&nbsp;</span>
                        <span>@&nbsp;&nbsp;</span>
                        <span>{{ article.create_time|date:'Y-m-d' }}&nbsp;&nbsp;</span>
                        <span>{{ article.blog.userinfo.username }}&nbsp;&nbsp;</span>

                        <span><span class="glyphicon glyphicon-comment"></span>评论数({{ article.comment_num }})&nbsp;&nbsp;</span>
                        <span><span class="glyphicon glyphicon-thumbs-up"></span>点赞数({{ article.up_num }})</span>
                        <span><a href="#">编辑</a></span>
                    </div>

                </div>
                <hr>
            {% endfor %}

        </div>
    </div>
</div>
posted @ 2019-12-10 21:10  black__star  阅读(554)  评论(0编辑  收藏  举报