django学习笔记
我使用的是win10的开发系统,在提前装好了virtualenv之后(鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper),在命令提示符中创建了python虚拟环境:
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是为了管理自己添加的文件)
在setting.py文件的加入了创建的app和templates路径
然后根据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文件,因为目前功能较少)
因为在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