zoukankan      html  css  js  c++  java
  • 在 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获得数据并传到对应的网页上!

    无

  • 相关阅读:
    亲测——pycharm下运行第一个scrapy项目 ©seven_clear
    [转]pycharm的一些快捷键
    一个豆瓣API的使用——拒绝思维定式
    小试牛刀--利用豆瓣API爬取豆瓣电影top250
    Python GUI编程--Tkinter
    多线程详解
    K8S+GitLab-自动化分布式部署ASP.NET Core(一) 部署环境
    初学者浅度剖析eShopOnContainers 里面用到的MediatR .
    通过Task异步加快对数组的运算
    为什么是容器?
  • 原文地址:https://www.cnblogs.com/liuzhennan/p/5337579.html
Copyright © 2011-2022 走看看