为了账号安全,请及时绑定邮箱和手机立即绑定
  • url路径传递参数

    path('detail/<int:article_id>',blog.views.get_detail_page)
    #views
    def get_detail_page(request,article_id):
        pass

    通过url传递参数,进行页面跳转

  • def get_index_page(request):
        all_article = Article.objects.all()
        return render(request,'blog/index.html',{'artcle_list':all_article}

    返回 通过render 函数对 index.html页面进行渲染,同时传入渲染页面使用的参数,变量

    05:41
    看视频
  • 在models中添加 

    def __str__(self):
        return self.title

    就可以在admin后台看见每一条数据显示的内容

    09:03
    看视频
  • 1,设计数据库字段,在model中设置表,字段,主键

    2.创建迁移字段 python manage.py makemigrations

    3.迁移字段    python manage.py migrate


    08:49
    看视频
  • 数据库设计

    1. 文章标题

    2. 文章摘要

    3. 文章内容

    class Article(modelsModel):

        primary_key=true

  • django项目与应用

    模型层

    视图与模板


  • 通过排序来选择最新的五篇文章

    top5_article_list = Article.objects.order_by('-article_id')[:5]
    paginator = Paginator(all_article, 3)
    page_num = paginator.num_pages
    page_article_list = paginator.page(page)
    if page_article_list.has_next():
        next_page = page + 1
    else:
        next_page = page
    if page_article_list.has_previous():
        previous_page = page - 1
    else:
        previous_page = page
    return render(request, 'blog/index.html', {
        'article_list': page_article_list,
        'page_num': range(1, int(page_num) + 1),
        'curr_page': page,
        'previous_page': previous_page,
        'next_page': next_page,
        'top5_article_list': top5_article_list
    })


  • 实现分页按钮

    设计?page= 的url

    def get_index_page(request):
        page = request.GET.get('page')
        if page:
            page = int(page)
        else:
            page = 1
        all_article = Article.objects.all()
        paginator = Paginator(all_article, 3)
        page_num = paginator.num_pages
        page_article_list = paginator.page(page)
        if page_article_list.has_next():
            next_page = page + 1
        else:
            next_page = page
        if page_article_list.has_previous():
            previous_page = page - 1
        else:
            previous_page = page
        return render(request, 'blog/index.html', {
            'article_list': page_article_list,
            'page_num': range(1, int(page_num) + 1),
            'curr_page': page,
            'previous_page': previous_page,
            'next_page': next_page
        })


  • 在文章详情页增加前后篇文章的跳转按钮

    html改造

    def get_detail_page(request, article_id):
        curr_article = None
        previous_article = None
        next_article = None
        previous_index = 0
        next_index = 0
        all_article = Article.objects.all()
        for index, article in enumerate(all_article):
            if index == 0:
                previous_index = 0
                next_index = index + 1
            elif index == len(all_article) - 1:
                previous_index = index - 1
                next_index = index
            else:
                previous_index = index - 1
                next_index = index + 1
            if article.article_id == article_id:
                curr_article = article
                previous_article = all_article[previous_index]
                next_article = all_article[next_index]
                break
        return render(request, 'blog/detail.html', {
            'curr_article': curr_article,
            'previous_article': previous_article,
            'next_article': next_article
        })


  • 使用url来对指定文章的详情页进行访问

    html加入a标签

    是点击可以跳转链接

  • 使用模板系统实时的进行渲染

    将数据通过

    return render(request, 'blog/detail.html', {
        'curr_article': curr_article
    })

    返回给页面进行显示

  • django的模板系统

    网页逻辑和网页视图应该分开设计

    {{变量}}

     {%for x in list %},{% endfor %}

     {% if %},{% else %}, {% endif %}



  • 使用bootstrap实现静态博客页面

    简单易上手

    栅格系统

    将页面分为12份


  • 使用django的模板来渲染页面

    进一步完成博客界面


  • def article_content(request):
        article = Article.objects.all()[0]
        title = article.title
        brief_content = article.brief_content
        content = article.content
        article_id = article.article_id
        publish_date = article.publish_date
        return_str = 'title:%s,brief_content:%s,content:%s,article_id:%s,publish_date:%s' % (title, brief_content, content,
                                                                                             article_id, publish_date)
        return HttpResponse(return_str)

    返回博客内容

  • django admin是自带的后台管理工具

    自己在admin中注册模板

    from .models import Article
    
    admin.site.register(Article)

    让后台管理显示标题分辨不同文章

    def __str__(self):
        return self.title


  • django shell

    可以用于小范围的debug

    python manage.py shell

    from blog.models import Article

    a=Article()

    a.title='Test shell'

    a.brief_content='hello shell'

    a.content='hello world hello django hello shell'

    a.save()

    print(Article.objects.all()[0].title)


  • 博客包括

    标题

    摘要

    内容

    IntegerField

    TextField

    DateTimeField

    AutoField自增

    primary_key主键

    创建模型

    class Article(models.Model):
        article_id=models.AutoField(primary_key=True)
        title=models.TextField()
        brief_content=models.TextField()
        content=models.TextField()
        publish_date=models.DateTimeField(auto_now=True)

    命令生成迁移文件

    python manage.py makemigrations

    命令导入文件

    python manage.py migrate

  • 视图层与数据库中间是模型层

    python与数据库表之间转换

    屏蔽数据库之间的差异

    专注于业务逻辑的开发

  • 模型层的定义

    如何创建一个文章的模型层

    了解django shell

    django admin模块了解


  • from django.http import HttpResponse
    # Create your views here.
    def hello_world(request):
        return HttpResponse('hello world')
    urlpatterns=[
        path('hello_world',blog.views.hello_world)
    ]

    完成项目路由,和应用路由对视图函数的绑定

首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
有简单的Python语言基础
老师告诉你能学到什么?
1. Django的项目结构 2. Django的应用开发 3. Django的路由配置 4. Django的视图层 5. Django的模型层 6. Django的模板系统 7. Django的Admin模块 8. Django的Shell

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!