1、新建总文件夹:mkdir,进入此文件夹:cd
2、在总文件夹中创建虚拟环境,激活后虚拟环境后在虚拟环境中安装Django:python3 -m venv myvenv、source myvenv/bin/activate、pip3 install django==1.8
3、在总文件夹中启动Django项目:django-admin startproject mysite . (注意后面的点
4、在setting.py中更改时区设置、添加STATIC_ROOT静态文件路径,设置数据库类型:Asia/Shanghai、STATIC_ROOT = os.path.join(BASE_DIR, 'static')、默认sqlite3
5、在总文件夹下创建数据库:python manage.py migrate
6、启动服务器:python manage.py runserver
7、创建app:python manage.py startapp blog
8、告诉Django使用这个app:在mysite/setting.py中的INSTALLED_APPS最后一行添加blog
9、在blog/models.py中创建博客文章模型,这里用的了class:
10、将新模型Post添加到数据库,首先要让Django知道模型有一些变更:
11、Django准备好了必须应用到数据库的文件:
12、为了让模型在admin页面可见,使用admin.site.register(Post)注册模型:
13、创建superuser:python manage.py createsuperuser
14、 登录http://127.0.0.1:8000/admin界面,创建Post
15、部署到服务器:
15-1:创建git仓库并输入用户名及email,以后提交时都会跟随提交用户名,以分辨是谁提交的更新:
15-2:创建.gitignore文件并放在git仓库主目录:
15-3:查看git仓库状态:git status,添加文件到仓库:
15-4:推送git仓库到GitHub上:
首先在GitHub网站创建仓库,然后执行以下命令:
$ git remote add origin https://github.com//my-first-blog.git
$ git push -u origin master
16、部署:这里用Pythonanywhere来部署网站,参考:http://tutorial.djangogirls.org/zh/deploy/
17、Django urls:
17-1:设置mysite/urls.py:注意看官方的注释
17-2:blog.urls
18、Django视图
第17步将url指向了view层post_list,现在需要创建view:
19、Django模板--HTML
19-1:在blog目录下创建templates/blog/post_list.html,编写HTML代码
19-2:将Git仓库中变动的内容推送到GitHub中:
git add . ;git status;git commit -m "";git push
19-3:在pythonanywhere端进行pull拉取代码:
在Files查看代码,在Web界面reload后刷新blog网页。
20、Django ORM
20-1:进入django shell:python manage.py shell
20-2:各种命令
先导入Post:from blog.models import Post
查看所有post对象:Post.objects.all()
查看用户名:from django.contrib.auth.models import User
User.objects.all()
创建用户名实例:me = User.objects.get(username='xxx')
创建对象:Post.objects.create(author=me, title='Smaple title', text='Test')
筛选对象:Post.objects.filter(author=me)
Post.objects.filter(title__contains='title')
以发布时间进行查询:from django.utils import timezone
Post.objects.filter(published_date__lte=timezone.now())
发布通过python终端添加的文章:
post = Post.objects.get(title='Sample title')
post.publish()
以创建时间排序:Post.objects.order_by('created_date')
反向排序:Post.objects.order_by('-created_date')
链式QuerySets:Post.objects.filter(published_date__lte=timezone.now()).order_by('created_date')
21、模板中的动态数据
views层做的是连接模型层(models.Post)和模版(post_list.html),views.py最终代码如下:
22、Django模版标签:允许将Python代码翻译成HTML,以便浏览器能够显示
23、CSS
关联到HTML文件
24、模版扩展:可以减少重复代码量,当想改变网页时,只需要改变一个文件
创建一个基础模版:
将post_list.html中的代码copy到base.py,并将for循环部分换成:
block模版标签允许在其中插入扩展的HTML代码,
打开post_list.html,删除for循环外的所有代码,并在第一行加上:
这行代码表示在post_list.html中扩展了base.html的内容,然后将for循环的内容放置于:
{% block content %} {% endblock content %} 之间,最终代码:
25、扩展详情页
25-1:给post_list.html中的文章标题添加链接:
25-2:创建文章详情页的URL,打开blog/urls.py:
25-3:增加文章详情页view:
25-4:增加文章详情页template,在blog/templates/blog中创建post_detail.html:
25-5:部署
Heroku部署:https://djangogirlstaipei.gitbooks.io/django-girls-taipei-tutorial/content/django/deploy.html
26、表单
见:http://tutorial.djangogirls.org/zh/django_forms/