Django In Ubuntu part1
1. 数据库配置
我们在项目的 settings.py 文件中找到 DATABASES 配置项,将其信息修改为:
HelloWorld/HelloWorld/settings.py: 文件代码:
1 | DATABASES = { |
这里添加了中文注释,所以你需要在 HelloWorld/settings.py 文件头部添加 # -*- coding: UTF-8 -*-。
上面包含数据库名称和用户的信息,它们与 MySQL 中对应数据库和用户的设置相同。Django 根据这一设置,与 MySQL 中相应的数据库和用户连接起来
Error: django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb.
Solve: python2.7 + Django1.11 , 解决方案: pip install mysql-server
1 | root@iZwz969jm0y04abuhgx4byZ:~# pip install mysql-python |
2. Django表单
HTML表单是网站交互性的经典方式。 本章将介绍如何用Django对用户提交的表单数据进行处理。
HTTP 请求
HTTP协议以”请求-回复”的方式工作。客户发送请求时,可以在请求中附加数据。服务器通过解析请求,就可以获得客户传来的数据,并根据URL来提供特定的服务。
GET 方法
我们在之前的项目中创建一个 search.py 文件,用于接收用户的请求:
/HelloWorld/HelloWorld/search.py 文件代码:
1 | # -*- coding: utf-8 -*- |
在模板目录 templates 中添加 search_form.html 表单:
/HelloWorld/templates/search_form.html 文件代码:
<!DOCTYPE html>
urls.py 规则修改为如下形式:
/HelloWorld/HelloWorld/urls.py 文件代码:
1 | from django.conf.urls import url |
访问地址 http://120.76.62.132:8000/search-form 并搜索
Error: 在Django视图函数中经常出现类似于’ascii’ codec can’t decode byte 0xef in position 0:ordinal not in range(128)的错误。
Solve: 使用同一套编码,将字符串全都转成byte string或unicode string
1.将字符串全都转成byte string。
self.response.out.write(“你好”+self.request.get(“argu”).encode(“utf-8”))
2.将字符串全都转成unicode string。
self.response.out.write(u”你好”+self.request.get(“argu”))
byte string转换成unicode string可以这样转unicode(unicodestring, “utf-8”)
Error: django.db.utils.ProgrammingError: (1146, u”Table’’ doesn’t exist”)解决办法
Slove: 原因:访问了数据库里不存在的表,可能是因为在model改变之后表结构没有更新
1 | root@iZwz969jm0y04abuhgx4byZ:~/HelloWorld# python manage.py migrate |