Github项目地址:

https://github.com/pirigg/-django-

我使用的是win10的开发系统,在提前装好了virtualenv之后(鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper),在命令提示符中创建了python虚拟环境:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

python  - m venv py37 - django2. 1.7 - env cd py37 - django2. 1.7 - env\scripts activate pip install django = = 2.1 . 7 python  - m pip install  - - upgrade pip cd .. django - admin startproject ourblog   cd myblog python manage.py runserver

 

这样就在虚拟环境下创建了一个django项目。

接下来进入到我的编辑器(Atom),用编辑器的终端(安装了插件)进入ourblog路径。

为了让django实现我要的功能,在和manage.py的同级中,创建app项目(blog),并在里面创建了templates(存放HTML文件)和static文档(存放HTML需要的静态文件)

实现后大体的项目目录如下(由于提前运行过,自动生成了.history和db.sqlite3文件夹,admin.py是为了管理自己添加的文件)

django学习笔记 随笔 第1张

在setting.py文件的加入了创建的app和templates路径

django学习笔记 随笔 第2张

django学习笔记 随笔 第3张

然后根据django标准的MTV模型流程。

在提前准备做好的HTML界面(做了一个首页和一个文章详情)后,

在models里创建Article和Comment两个class,其中Article里有文章标题和内容,Comment里有评论者和评论内容,将评论内容用models.ForeignKey指向文章

在终端中输入

python manage.py makemigrations python manage.py migrate

通过django内置数据库自动创建数据表(每次改动Models都要重新)

然后由于两个页面各有需求,在Views中创建一个索引文章详情页的函数index和一个在文章详情页中可以保存评论的函数detail。

然后在urls文件在引用它们(没有在blog的app中创建本地urls文件,因为目前功能较少)

django学习笔记 随笔 第4张

因为在detail函数中要用到文章编号page_num参数,所以用url(r'^detail/(?P<page_num>\d+)$', detail, name="detail")

 

然后回到的HTML文件,在开头加上{% load staticfiles %}或{% load static %},把内容里里面的引用替换为静态标记。

如:<link rel="stylesheet" href="../static/css/semantic.css' %}"

替换为<link rel="stylesheet" href="{% static 'css/semantic.css' %}"

还有将文章标题和内容替换为{{article.headline}}和{{ article.content }}等等

 

我还创建了一个admin.py文件并给它设置了权限

from  django.contrib  import  admin from  blog.models  import  Article, Comment # Register your models here. admin.site.register(Article) admin.site.register(Comment)

保存后在终端创建超级账号以便管理

python3 manage.py createsuperuser

 这样就创建了一个简单的论坛网站。。

 

实现分页功能:

from django.core.paginator import Paginator

...

page_robot = Paginator(vids_list, 9)            #9个一页
vids_list = page_robot.page(request.GET.get('page'))    

...

在list里判断是否有上或下一页

直接用.has_previous或.has_next

{% if 'editors' in request.path %}    #用来判断网站路径(输入的网址)里是否有editors

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄