在 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获得数据并传到对应的网页上!

无

posted on 2016-03-30 16:05  菜鸟&号  阅读(302)  评论(0编辑  收藏  举报