04 使用模板显示内容

技术交流QQ群:1027579432,欢迎你的加入!

本教程来源于B站杨仕航Django2.0开发视频教程,如需转载,必须注明来源!

1.查看文章页面

  • 如何通过统一的一个处理方法获取每一篇文章?解决方法:利用文章的唯一标识
  • 具体实现:打开article文件夹下的migrations/0001_initial.py,我们可以看到区别每篇文章的字段是id。因此,在article文件夹下的views.py文件中定义视图文件,如下所示:
    from django.http import HttpResponse
    # Create your views here.
    
    
    def article_detail(request, article_id):
        return HttpResponse('文章id: %s' % article_id)
  • 在mysite文件夹下的urls.py文件中添加每篇文章的路由地址,如下所示:
    from article.views import article_detail
    
    urlpatterns = [
        path('article/<int:article_id>', article_detail, name="article_detail"),
    ]

2.objects

  • 模型的objects是获取或操作模型的对象,具体的方法如下:
    Article.objects.get(条件)
    Article.objects.all()
    Article.objects.filter(条件)
  • 在article文件夹下的views.py文件中写入需要在前端页面上展示的字段,如下所示:
    from django.shortcuts import render
    from django.http import HttpResponse, Http404
    from .models import Article
    # Create your views here.
    
    
    def article_detail(request, article_id):
        try:
            article = Article.objects.get(id=article_id)
        except Article.DoesNotExist:
            raise Http404('Not Exist')
    
        return HttpResponse('<h2>文章标题: %s</h2> <br /> 文章内容: %s ' % (article.title, article.content))

3.使用模板

  • 使用模板的目的:前端页面和后端代码分离,减少耦合性。优化上一步中article文件夹下的views.py文件前后端代码的耦合性。
  • 具体步骤如下:
    • 在article文件夹下创建templates文件夹,里面存放前端页面所需要的html文件;
    • 在templates文件夹下创建article_detail.html文件,然后对其进行编辑;
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Document</title>
      </head>
      <body>
          <h2>{{ article_obj.title }}</h2>
          <hr>
          <p>{{ article_obj.content }}</p>
      </body>
      </html>
    • 同时,对article文件夹下的views.py文件中代码进行优化,优化的结果是:
      from django.shortcuts import render_to_response, get_object_or_404
      from .models import Article
      # Create your views here.
      
      
      def article_detail(request, article_id):
          article = get_object_or_404(Article, pk=article_id)
          context = {}
          context['article_obj'] = article
          return render_to_response('article_detail.html', context)

4.获取文章列表

文章列表.png
  • 在article文件夹下的views.py文件中添加如下代码,实现获取文章列表的功能。
    def article_list(request):
        articles = Article.objects.all()
        context = {}
        context['articles'] = articles
        return render_to_response('article_list.html', context)
  • 在templates文件夹下创建article_detail.html文件,然后对其进行编辑;
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <!-- {% 这是模板标签 %} -->
        {% for article in articles%}
            <a href="{% url 'article_detail' article.pk %}">{{ article.title }}</a>
        {% endfor %}
    </body>
    </html>
  • 在mysite文件夹下的urls.py文件中添加文章列表article_list的路由地址,如下所示:
    from article.views import article_detail, article_list
    urlpatterns = [
        path('admin/', admin.site.urls),  # 根路由(后台管理网址):www.baidu.com/admin/
        path('', views.index),   # www.baidu.com
        path('article/<int:article_id>', article_detail, name="article_detail"),
        path('article/', article_list, name="article_list"),
    ]
  • 打开浏览器,输入网址http://localhost:8000/article/,注意:此url中并没有指定哪一篇文章的article_id就可以获得所有的文章信息,如下所示:
    文章列表前端页面.png

5.总urls包含app的urls

总urls包含app的urls.png
  • 打开mysite文件夹下的全局路由文件urls.py,将如下代码剪切到article文件夹下的urls.py(如果没有该文件,需手动新建此文件),
    # localhost:8000/article/1
    path('<int:article_id>', article_detail, name="article_detail"),
    # localhost:8000/article/
    path('', article_list, name="article_list"),
  • 对article文件夹下新建的urls.py文件进行编辑,添加如下内容:
    from django.urls import path
    from .import views
    
    urlpatterns = [
        path('article/<int:article_id>', views.article_detail, name="article_detail"),
        path('article/', views.article_list, name="article_list"),
    
    ]
  • 接着,打开mysite文件夹下的全局路由文件urls.py,在当中引用article这个app的路由文件,添加如下内容:
    from django.urls import path, include
    
    urlpatterns = [
        # .....
        path('article/', include('article.urls')),
    ]
全部评论

相关推荐

04-11 00:51
已编辑
门头沟学院 Java
先说一下楼主的情况:双非本大三,两段实习,javaer,想要找一个暑期大厂offer,努力了两个月,三月份每天的状态就是算法,八股,项目,四月份更是一个面试没有,最终还是没有结果,心碎了一地。期间面了一些中小厂,大厂只有腾讯约面,其他大厂都投了一遍,但是还是石沉大海。再看一下楼主的面试结果吧,就不说ttl了腾讯s3:三面挂csig:一面挂teg:三面挂wxg:一面挂没错,面了八次腾讯,两次三面挂,当时真的心都碎了。其他中小厂都有面,有的没过,有的oc,但是都没有去。其他大厂投了简历,但是不是简历挂,就是测评挂,都说今年行情好很多,各大厂都扩招,可是问题出在那里呢?学历背景吗?实习经历吗?还是简历不够好看?依稀记得,从年初七就离开了家里,回到学校,早早准备面试,当时自己认为凭借着自己的两段实习经历,以及大二就开始准备的八股算法,拿大厂offer不是问题,但是还是不敢放松,回校的状态每天就是算法,八股,还有查看各种招聘信息,想着尽早投机会多,但是事实证明,投的早,不如投的刚刚好。当时想着,先投一些中小厂开始面试,找找面试感觉,从2.10就开始有面试了,基本都是线下面试,面试的感觉都很不错,觉得自己的状态慢慢回来了,期间也有oc一些中小厂,但是自己的目标并不在此,只是想练一下手,遂拒。后面投了腾讯的暑期实习基地,不久就约面了,第一次面这么大的厂,多少有点紧张,好在运气还不错,遇到的面试官也比较好,一直干到了三面,期间看牛客有不少说一面就挂了的,感觉自己还是比较幸运的,但是没想到倒在了三面,一周后就挂了,伤心是有的,但是想到这才刚刚开始,还有很多机会,便继续准备下一次面试了,很快,被另外一个部门捞了,一进会议,面试官没开摄像头,看网上说没开摄像头很多都是kpi,但是自己给自己打气,认为面试官只是不方便开摄像头罢了,面完,感觉良好,没问什么很难得问题,基本都答出来了,算法两道也a了一道,感觉实习不会这么严格吧?还是过了一会挂了,因为这个?还是技术不太匹配?面试过程中说搞C++的,心想,搞c++的你面我干啥?唉,这时候有点气馁,然后就接下来半个月没有面试。这时已经是三月底了,看到牛客好多人都已经陆陆续续拿到了offer,看人家的面试准备也没那么早,有0实习的,有没刷算法的,有两个面的,,,唉,反正是一言难尽啊,感觉努力没有什么意义,面试多半是看面试官的感觉,主观性很大啊,只要你技术没有太大的问题。第三次面试腾讯,面试来的比较突然,期间已经有几天没看八股什么的了,临时看了一下之前自己做的面试笔记,但是面试却异常顺利,三天闯到了三面,自己也不敢相信,三面玩感觉也良好,脑子里不得不想着一些“offer结算画面”,但是过了一会查看流程显示“流程终止”,我?哎,当时真的有苦说不出啊,也是一晚没睡。后面就逐渐开始褪去大厂梦了,看着曾经跟自己交流的牛油,朋友,认识的人,觉得他们技术不太如你,算法刷的没你多,进了大厂,但是这又如何呢?能力强不强不是你了说了,面试官说了算。也逐渐知道,不是你能力好就可以了,还得有运气,运气,运气。这个过程太累了,和自己和解吧,不用非得大厂,找个合适一点的就好,放轻松一点。今天有点心事睡不着,闲着想写一些自己的面试过程,勿喷。附上一张面试的情况,公司就不方便透露了。
怒卷的斯科特:八分运气两分实力
点赞 评论 收藏
分享
关于我大学本科四年,想了很多,但还是不知道该怎么动笔&nbsp;“大学四年,是我从懵懂少年走向职场青年的转折期。这一路跌跌撞撞,有迷茫,有遗憾,也有成长和决心。”&nbsp;大一刚进来时仍然有高中那股学习劲,经常一个人去图书馆学高等数学,但后面劲头一过便开始在宿舍开启躺平生活(现在想想那段时间真的很爽,无忧无虑)。由于大一担任班干部,所以经常要跟其他班的班干部交流,在此期间认识了隔壁班的一位女生,短发而很可爱,因为很多团建还有比赛都是我们两班一起参加的,而且我和她都是负责人,所以交集很多,后面慢慢地彼此对产生了好感,所以在大一刚开学的2个月后,我们在一起了,彼此之前都是初恋。但当时我真的是太太太直男了,对感情的想...
真烦好烦真烦:骗哥们可以,别把你自己也骗到了就行。哥们被你骗了真无所谓的,打个哈哈就过了。但希望你打完这段话后擦一下眼角,别让眼泪掉在手机屏幕上了就行。你说的这些话,哥们信一下也是没什么的。还能让你有个心里安慰,但这种话说出来骗骗兄弟就差不多得了,哥们信你一下也不会少块肉,但是你别搞得自己也当真了就行。哥们被你骗一下是真无所谓的,兄弟笑笑也就过去了。真不是哥们想要破你防,你擦擦眼泪好好想想,除了兄弟谁还会信你这些话?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务