django笔记

更新时间:2024-03-09 01:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

步骤

1.安装django框架 使用pip命令安装: sudo pip install Django

如果电脑没安装pip,则需要先安装pip,新版本的pip安装之后再使用pip命令可能会出现以下问题:

raiseReadTimeoutError(self._pool, None, 'Read timed out.') ReadTimeoutError:

HTTPSConnectionPool(host='pypi.python.org',

port=443): Read timed out.

/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information,

see

https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

其实是SSL的问题,urllib3需要pyopenssl

解决方案:pip install pyopensslndg-httpsclient pyasn1 这一步之前还要安装两个依赖项 1.Ubuntu下安装

sudo apt-get install libffi-dev libssl-dev 2.CentOS下安装

yum install libffi-developenssl-devel

链接:Python 解决 InsecurePlatformWarning: A true SSLContext object is not available. 2.新建项目

以新建一个博客为例

先要新建一个工程,这里命名为mysite,这个工程下可以有很多个应用,后面我们会新建一个blog应用 django-admin.pystartprojectmysite

执行这条命令,就会在当前目录下新建一个项目,结构如下(最顶端的目录这里称为工程主目录): mysite

├── manage.py └──mysite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py

manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。

settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。

urls.py ----- 负责把URL模式映射到应用程序。

2.运行开发服务器(从这里开始注意区分工程和应用这两个词) 切换到工程目录,执行运行服务器命令: python manage.py runserver

启动服务器后,通过浏览器访问127.0.0.1:8000/

出现上面的图片就是访问成功了 3.创建blog应用

在工程目录下执行这条命令:python manage.py startapp blog 那么在这个工程目录下就会新建一个名为blog的目录(在这里会称为应用目录),结构如下: ├── blog │├── admin.py │├── __init__.py │├── models.py │├── tests.py │└── views.py 4.设计你的Model

在blog目录(即应用目录)下的models.py是blog应用的核心文件之一,是定义blog数据结构的地方。 用编辑器打开models.py

新添加BlogPost类,代码如下: fromdjango.db import models # Create your models here. classBlogPost(models.Model):

title = models.CharField(max_length = 150) body = models.TextField()

timestamp = models.DateTimeField()

BlogPost类是django.db.models.Model的一个子类。它有变量title(blog的标题),body(blog的内容部分),timestamp(blog的发表时间)。 Model其实是与数据库相联系的,上面代码中model定义的成员变量对应着数据库相应的表中的各个字段 5.设置数据库

Django支持主流的数据库服务器(MySQL,PostgreSQL,Oracle和MSSQL),但这个例子使用SQLite,这里只通过一条简单的命令就可以创建SQLite数据库。

切换到工程主目录,执行如下命令: python manage.py syncdb

它会要求你新建一个用户,跟着要求设置一个账户和密码,这在后面后台管理员登录时会用到。 6.设置自动admin应用

这一步是方便你作为管理员在后台修改数据库对应的model的数据。 1)打开mysite/mysite/urls.py,确保urlpattens的列表里有这样一个元素,

url(r'^admin/', include(admin.site.urls))

接着修改mysite/blog/models.py,修改后的代码如下: fromdjango.db import models fromdjango.contrib import admin # Create your models here. classBlogPost(models.Model):

title = models.CharField(max_length = 150) body = models.TextField()

timestamp = models.DateTimeField() admin.site.register(BlogPost)

2)编辑mysite/mysite/settings.py,在INSTALLED_APPS里面添加blog应用,即添加’blog’字符串(和要添加的应用名字相对应)。 注意:不管添不添加到admin,每新建一个应用,都要在settings.py的INSTALLED_APPS列表里添加这个应用,不然在后面开发应用的时候会出现一些诸如找不到模板之类的错误。

3)打开浏览器,输入http://127.0.0.1:8000/admin/,输入刚才创建数

据库时候填写的帐号就能进入admin界面。

4)进入admin界面之后你会看到BlogPost应用,点击进入

接着点击add按钮你就可以方便地为你新建的model的各个字段赋值。

注意:添加model并保存之后可能会出现下面这样的问题

就是no such table的问题 解决方案:

在工程主目录下执行命令: python manage.py makemigrations python manage.py migrate

然后刷新网页,重新提交请求就行了 每次改动模型之后都要执行上述两条命令 链接:Django: OperationalError no such table

7.建立Blog的公共部分

从Django的角度看,一个页面具有三个典型的组件:

1)一个模板(template):具体对应应用目录下的templates目录,

模板负责把传递进来的信息显示出来。

2)一个视图(view):具体指应用目录下的views.py文件,文件中可以定义有关的视图函数,负责接收表单上传的数据,处理数据,从数据库获取需要显示的信息,重定向到别的网页,模板或视图函数。 3)一个URL模式:这个是由工程目录和应用目录下的urls.py文件中的urlpatterns共同组合而成的,它负责把收到的请求和你的视图函数匹配,有时候也会向视图传递一些参数。

用户访问django应用的过程可以总结为:

首先在网址输入框输入一个url,程序通过将这个url与工程和应用目录下的urls.py文件中定义的urlspatterns一级级匹配,若匹配成功,则会调用对应的视图函数处理http请求,最后重定向到目标网页,呈现给用户。(url和视图函数的对应关系在应用目录下的urls.py文件里指定)

1)创建模板

在blog目录下建立template目录(mysite/blog/templates),创建模板文件archive.html,它的内容如下: {% for post in posts %}

{{ post.title }}

{{ post.timestamp }}

{{ post.body }}

{% endfor%}

2)创建一个视图函数

在app应用的目录下的view.py添加视图函数 fromdjango.shortcuts import render fromdjango.template import loader,Context fromdjango.http import HttpResponse fromblog.models import BlogPost # Create your views here. def archive(request): posts = BlogPost.objects.all()

t = loader.get_template(\ c = Context({'posts':posts})

returnHttpResponse(t.render(c))

posts = BlogPost.objects.all() :获取数据库里面所拥有BlogPost对象 t = loader.get_template(\:加载模板

c = Context({'posts':posts}):模板的渲染的数据是有一个字典类的对象Context提供,这里的是一对键值对。 3)创建一个URL模式

第一步,在mysite/mysite/urls.py里面urlpattens添加url(r'^blog/', include('blog.urls')),

第二步:在blog应用里面定义URL,创建一个urls.py

(mysite/blog/urls.py) fromdjango.conf.urls import * fromblog.views import archive

urlpatterns = patterns('', url(r'^$',archive), )

最后,在浏览器输入如下地址http://127.0.0.1:8000/blog/ 就可以访问到网页了

这个例子的model增加了一个图片(model.ImageField)的字段,其他字段还是没变的

上传图片并保存在服务器端:

上面的例子展示的图片是在admin后台上传的,接下来说明怎么写表单并上传图片

本文来源:https://www.bwwdw.com/article/ns3a.html

Top