django3.2 设置首页路由进行数据渲染

"本文详细介绍了Django项目的URL配置,包括总路由和首页字路由的设置。同时,讲解了view.py中TemplateView的使用,展示了如何实例化视图类并处理GET和POST请求。在模板渲染部分,解释了模板继承、静态资源引用以及变量渲染的方法,强调了{% block content %}
摘要由CSDN通过智能技术生成

1.  总路由:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(('index.urls', 'index'), namespace='index')),

        ]

2. 首页的字路由:

        

urlpatterns = [
    # path('', indexView, name='index'),
    path('', indexClassView.as_view(), name='index'),   #如果路由的视图为视图类,视图类必须由调用函数方法as_view(),这是对视图类进行实例化处理。 indexClassView  是首页view 的类名
]

3. view.py 函数编写



class  indexClassView(TemplateView): #继承TemplateView 
    template_name = 'index.html' # 模板name
    template_engin =  None
    content_type = None  #属性值为None则使用text/html作为响应内容的数据格式
    # extra_context  继承父类,模板渲染方式:<title>{{title}}</title> 
    extra_context = {'title':'我是首页的标题', 'classContent': ''}  
    


   def get_context_data(self, **kwargs):
        context =super().get_context_data(**kwargs)  # super() 就是用来调用父类函数。 get_context_data()
        context['commodityInfos'] = CommodityInfos.objects.order_by('-sold').all()[:8]
        types = Types.objects.all()
        # 宝宝服饰
        cl = [x.seconds for x in types if x.firsts == '儿童服饰']
        print(type(cl))
        context['clothes'] = CommodityInfos.objects.filter(types__in=cl).order_by('-sold')[:5]   # 集合去查取前5条数据, 倒排序
        # 奶粉辅食
        fl = [x.seconds for x in types if x.firsts == '奶粉辅食']
        context['food'] = CommodityInfos.objects.filter(types__in=fl).order_by('-sold')[:5]
        # 宝宝用品
        gl = [x.seconds for x in types if x.firsts == '儿童用品']
        context['goods'] = CommodityInfos.objects.filter(types__in=gl).order_by('-sold')[:5]
        return context

    # 定义HTTP的GET请求处理方法
    # 参数request代表HTTP请求信息
    # 若路由设有路由变量,则可从参数kwargs里获取
    def get(self, request, *args, **kwargs):
        print("进来了")
        pass
        context = self.get_context_data(**kwargs)
        return self.render_to_response(context)

    # 不同的请求执行不同的方法不会报错
    def post(self, request, *args, **kwargs):
        pass
        context = self.get_context_data(**kwargs)
        return self.render_to_response(context)

4. 模板渲染(django 默认模板引擎)

#  正常的模板文件分为3部分:
    a.头部: 这部分是通用的单独创建个文件为base.html
            1.语法包含:
                1.1:static 调用静态资源:{%static  'css/main.css'%} 或 {%static 'imags/log.jpg'%}
                1.2:url 生成路由地址:<a href="{%url 'index:index'%}"> 。 第一个index表示总路由的namespace的值,第二个index代表应用name="index"的路由地址。
                1.3:load  加载静态类 : 一般写在<head>里{% load static %}
                1.4:title 变量渲染:<title>{{title}}</title>  view中 extra_context = {'title': '我是你爹', 'classContent': ''}
                1.5: {% block content %}{% endblock content %}  : 给内容模板继承渲染用的
                1.6:{% extends 'base.html' %} 继承base.html模板
                1.7:{% block content %} 中间写body 相关标签数据 {% endblock content %}

 

 

 # 参考《精通Django3 Web开发》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值