python文档入门的笔记,也就是创建一个投票应用那个,后面的文档就只看,没记了
Django学习笔记
1. 前期准备
使用虚拟环境Virtualenv
1234567$ pip install Virtualenv #安装Virtualenv#在要运行Django的目录创建 虚拟环境$ virtualenv djangoproject_env #运行后在当前目录生成djangoproject_env$ source djangoproject_env/bin/activate #启动虚拟环境$ django-admin startproject testproject #创建Django工程$ python manage.py runserver #进行测试$ python manage.py startapp testapp #创建Django应用Django 默认的语言是英语,所以显示给我们的欢迎页面是英文的。我们在 Django 的配置文件里稍作修改,让它支持中文。用任何一个文本编辑器打开 settings.py 文件,找到如下的两行代码:
12345678blogproject/blogproject/settings.py## 其它配置代码...LANGUAGE_CODE = 'en-us'TIME_ZONE = 'UTC'## 其它配置代码...
把 LANGUAGE_CODE 的值改为 zh-hans,TIME_ZONE 的值改为 Asia/Shanghai:
寻找一个学习文章,英文有点渣,我就找中文的,英文看不懂的就切中文看
中文文档 原版英本文档
2.笔记(按目录分)
1.编写你的第一个Django应用,第1部分
运行django-admin startproject mysite后会生成如下文件夹或文件
- 外层的mysite/根目录仅仅是项目的一个容器。它的命名对Django无关紧要;
- manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互。
- 内层的mysite/目录是你的项目的真正的Python包。它是你导入任何东西时将需要使用的Python包的名字(例如 mysite.urls)。
- mysite/init.py:一个空文件,它告诉Python这个目录应该被看做一个Python包。
- mysite/settings.py:该Django 项目的设置/配置。
- mysite/urls.py:该Django项目的URL声明;你的Django站点的“目录”。
- mysite/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。
项目 vs. 应用
项目和应用之间有什么不同? 应用是一个Web应用程序,它完成具体的事项 —— 比如一个博客系统、一个存储公共档案的数据库或者一个简单的投票应用。 项目是一个特定网站中相关配置和应用的集合。一个项目可以包含多个应用。一个应用可以运用到多个项目中去。
如上面所创建的mysite就是一个项目
运行: python manage.py startapp polls
生成如下结构:
这样的结构就是我们的polls应用,这个应用可以放在任何python path里
总结:实现模型变更的步骤
- 修改你的模型(在models.py文件中)。
- 激活模型
编辑mysite/settings.py文件,并修改INSTALLED_APPS设置以包含字符串’polls’
现在Django知道要包含polls应用。 让我们运行另外一个命令:$ python manage.py makemigrations polls - 运行python manage.py makemigrations ,为这些修改创建迁移文件
- 运行python manage.py migrate ,将这些改变更新到数据库中。
2.编写你的第一个Django应用,第2部分
创建一个管理员用户¶
首先,我们需要创建一个能够登录管理站点的用户。 运行如下命令:
$ python manage.py createsuperuser
键入你想要使用的用户名,然后按下回车键:
Username: admin
然后提示你输入想要使用的邮件地址:
Email address: admin@example.com
你需要输入两次密码,第二次输入是确认密码
Password:
Password (again):
Superuser created successfully.
其中,django会自动检测密码,密码跟邮箱或者用户名太像也不会通过。。。
在polls/admin.py中,代码示例如下
3.编写你的第一个Django应用,第3部分
创建视图
123456#polls/views.pyfrom django.http import HttpResponsedef index(request):return HttpResponse("Hello, world. You're at the polls index.")这就是一个视图,然而我们需要将这个视图映射到URL上 —— 利用一个URLconf。
要在polls目录中创建一个URLconf,创建一个名为urls.py的文件12345678#polls/urls.pyfrom django.conf.urls import urlfrom . import viewsurlpatterns = [url(r'^$', views.index, name='index'),]下一步,让主URLconf可以链接到polls.urls模块。在mysite/urls.py中插入一个include():
12345678#mysite/urls.pyfrom django.conf.urls import include, urlfrom django.contrib import adminurlpatterns = [url(r'^polls/', include('polls.urls')),url(r'^admin/', include(admin.site.urls)),]这样处理后就能在输入对应网址时跳转到对应的视图(关于URL的更多参数)
模板编辑
模板应该位于 polls/templates/polls/index.html。由于app_directories 模板加载器按照上面描述的方式工作,在Django中你可以简单地用polls/index.html引用这个模板,不这样做Python会引用到别的模板。
因为django将选择它找到的名字匹配的第一个模板文件,如果你在不同 的应用有相同名字的模板文件,Django将不能区分它们。我们需要将Django指向正确的模板,最简单的方式是使用命名空间。具体实现方式是,将这些模板文件放在以应用的名字来命名的另一个目录下1234567891011121314#polls/views.pyfrom django.http import HttpResponsefrom django.template import RequestContext, loaderfrom .models import Questiondef index(request):latest_question_list = Question.objects.order_by('-pub_date')[:5]template = loader.get_template('polls/index.html')context = RequestContext(request, {'latest_question_list': latest_question_list,})return HttpResponse(template.render(context))
在这个栗子中,中文版的原文已经做了如下阐述:
> 以上的代码载入polls/index.html模板,并传给它一个context。Context是一个字典,将模板变量的名字映射到Python 对象。将你的浏览器指向“/polls/”来加载这个页面,你应该看到一个列表,包含来自教程1中"What's up" Question。其链接指向Question的detail页面。
然而还是遇到了这个错误提示:
1
TypeError: context must be a dict rather than RequestContext.
https://stackoverflow.com/questions/43787700/django-1-11-typeerror-context-must-be-a-dict-rather-than-context
也说了是Django1.8+后更改的问题
但是1.11版教程是这样的:
也就是,改为字典传入就好了,至于为什么,等学完看源代码再说了~
- 快捷方式以及404跳转查看
4.编写你的第一个Django应用,第4,5,6部分
看后觉得有点不知所以然- -,好像也没什么重地,笔记略过
之后就开始撸文档了。。。。Django的文档好多啊 :(
这是一张在网上找的图~