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

 

posted @ 2019-04-12 20:15  pirigg  阅读(157)  评论(0编辑  收藏  举报