在 Django 中构建 mysql 数据库支持的 Web 应用程序(linux )
运行: python 若出错说明系统没有按装python否则可越过安装python这步
安装python
下载 wget http://python.org/ftp/python/2.7/Python-2.7.tar.bz2
tar -jxvf Python-2.7.tar.bz2
cd Python-2.7
./configure
make all
make install
安装Django
下载 wget https://www.djangoproject.com/m/releases/1.8/Django-1.8.2.tar.gz
tar xzvf Django-1.8.2.tar.gz
cd Django-1.8.2
adduser python
sudo python setup.py install
安装setuptools
下载 wget https://enterprise-storage-os.googlecode.com/files/setuptools-0.6c11.tar.gz
tar xzvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py install
安装mysql-python
下载wget http://sourceforge.net/projects/mysql-python/files/mysql-python-test/1.2.3b1/MySQL-python-1.2.3b1.tar.gz/download
tar xvzf MySQL-python-1.2.3b1.tar.gz
cd MySQL-python-1.2.3
python setup.py build
sudo python setup.py install
以上都安装完成后就可进行下一步了。
创建第一个 Django 项目,并在其中创建一个应用程序
首先,可能要创建一个用于存储 Django 项目的文件夹,从操作系统提示符进入此文件夹:
例如:mkdir Django
cd Django
然后发出以下命令:
django-admin.py startproject myproj
在此项目内创建一个应用程序
chmod +x manage.py
./manage.py startapp myapp
可能出现:
raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc)
django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order):
No module named _sqlite3
解决方法:
vi myproj/settings.py
找到 DATABASES
修改为
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #设置为mysql数据库
'NAME': 'test', #mysql数据库名
'USER': 'root', #mysql用户名,留空则默认为当前linux用户名
'PASSWORD': '123456', #mysql密码
'HOST': '', #留空默认为localhost
'PORT': '', #留空默认为3306端口
}
}
注:上面的中文注释,在不指定Python文件编码的情况下可能会引起SyntaxError,所以不要复制这些中文注释。
这一步相当于选择了数据库的连接对象。
vi myproj/urls.py
在urlpatterns里添加一条记录:
from myapp import views as myapp_views
url(r'^articles/', myapp_views.latest_article),
在TEMPLATE里添加一条记录:
vi myproj/settings.py
'DIRS': [os.path.join(BASE_DIR, 'templates'),],
与模型的对象关系映射
vi myapp/models.py
添加
class student(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=20, null = True)
class = models.CharField(max_length=25)
age = models.CharField(max_length=25)
class Meta:
db_table = "student"
注上面有个错误的class为python中的保留字,可以修改数据库相对应的字段
(修改方法:alter table student change class myls varchar(30);
在上述示例中,需要注意的事项是类 Meta 的使用,可以通过此类为模型提供元数据选项。在此示例中,
您使用 db_table 选项显式指定模型要映射到的表的名称。
实际上,默认情况下,Django 假设表的名称由模型类的名称和应用程序名称组成(通过下划线 (_) 符号分隔)。
因此,在此示例中,Django 将查找名为 myapp_student的表。当然,db_table 并不是您可用于模型内部类 Meta 的唯一选项。
您可以在 Django 文档的 Model Meta 选项页面上查看可用的 Meta 选项列表。
vi myapp/views.py
添加
from myapp.models import student
def latest_article(request):
article_list = student.objects.order_by('id')
return render(request, 'index.html', {'article_list':article_list})
mkdir templates
vi index.html
{% for article in article_list %}
Author:{{ article.author }}
Title:{{ article.title }}
Content:{{ article.title }}
</br>
{% endfor %}
配置完成打开
http://127.0.0.1:8000/articles
Django1目录结构
.
└── myproj
├── index.html
├── manage.py
├── myapp
│ ├── admin.py
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── models.pyc
│ ├── tests.py
│ ├── views.py
│ └── views.pyc
├── myproj
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
└── templates
└── index.html
个人总结:当我们打开http://127.0.0.1:8000/articles时应用会先通过进入urls.py遍历找到相对应的视图中的方法,在视图方法中在通过models获得数据并传到对应的网页上!