Django安装步骤(pycharm)

1.创建Django项目

db没有显示红色x说明创建成功了

2.安装插件

界面左下角有一个Terminal,点开就是一个命令行控制台,可以输入命令

查看Django版本信息,可以看出pycharm创建Django安装的是2.1.1的版本

2.1.安装Django1.11.12版本

目前支持比较好的为1.11.12,所以可以安装1.11.12(安装过程中会自动卸载掉2.1.1版本)

2.2安装Pymysql插件

接下来安装pymysql驱动包(用于连接数据库)

(venv) D:\Django\db>pip install pymysql
Collecting pymysql
  Using cached https://files.pythonhosted.org/packages/a7/7d/682c4a7da195a678047c8f1c51bb7682aaedee1d
ca7547883c3993ca9282/PyMySQL-0.9.2-py2.py3-none-any.whl
Collecting cryptography (from pymysql)
  Using cached https://files.pythonhosted.org/packages/f1/01/a144ec664d3f9ae5837bd72c4d11bdd2d8d40331
8898e4092457e8af9272/cryptography-2.3.1-cp36-cp36m-win_amd64.whl
Collecting cffi!=1.11.3,>=1.7 (from cryptography->pymysql)
  Using cached https://files.pythonhosted.org/packages/2f/85/a9184548ad4261916d08a50d9e272bf6f93c54f3
735878fbfc9335efd94b/cffi-1.11.5-cp36-cp36m-win_amd64.whl
Collecting idna>=2.1 (from cryptography->pymysql)
  Using cached https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746a97fab0
5a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl
Collecting six>=1.4.1 (from cryptography->pymysql)
  Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43
ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting asn1crypto>=0.21.0 (from cryptography->pymysql)
  Using cached https://files.pythonhosted.org/packages/ea/cd/35485615f45f30a510576f1a56d1e0a7ad7bd8ab
5ed7cdc600ef7cd06222/asn1crypto-0.24.0-py2.py3-none-any.whl
Collecting pycparser (from cffi!=1.11.3,>=1.7->cryptography->pymysql)
  Using cached https://files.pythonhosted.org/packages/8c/2d/aad7f16146f4197a11f8e91fb81df177adcc2073
d36a17b1491fd09df6ed/pycparser-2.18.tar.gz
Installing collected packages: pycparser, cffi, idna, six, asn1crypto, cryptography, pymysql
  Running setup.py install for pycparser ... done
Successfully installed asn1crypto-0.24.0 cffi-1.11.5 cryptography-2.3.1 idna-2.7 pycparser-2.18 pymys
ql-0.9.2 six-1.11.0

查看版本信息

3.配置Django基本流程

3.1.导入pymysql包

在Django的db项目名称下的__init__.py下添加

import pymysql   #导入pymysql包,里面的所有功能便可以使用了,不需要单独一个个导入pymysql下的功能模块了
pymysql.install_as_MySQLdb()   #当成mysqldb使用,没有这个就会使用pymysql的方式,这个主要是便于之前2.x版本用习惯了mysqldb的人使用(3.x版本后无法使用mysqldb)

3.2创建app

Terminal控制台敲命令

python manage.py startapp db_operate

创建完成后,会在左边多出一个目录db_operate(自己创建时的命名),里面就是用来做Django各种操作的

3.3注册APP

进入settings.py,找到一下配置,添加'db_opeate',用于注册创建的app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'db_operate'
]

4.修改urls.py文件

from django.contrib import admin
# from django.urls import path  Django2.1.1版本的导入方式
from django.conf.urls import url

urlpatterns = [
    # path('admin/', admin.site.urls), Django2.1.1版本的导入方式
    url('admin/', admin.site.urls),
]

4.配置静态网页

4.1创建目录static

这个static目录里面用于存放子目录如css、js、img这些内容

4.2.配置static添加信息

在settings.py中配置static静态页面信息,作用是便于Django项目运行是调用该目录下的文件

4.3.static下添加内容

4.4.创建index.html网页文件

这个文件需要在templates下创建,这个目录在创建项目的时候自动创建的,项目运行时,会找到这个目录下的网页文件进行识别

5.配置数据库

5.1连接数据库

#settings.py文件
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'demo',
        'USER':'root',
        'PASSWORD':'root'
    }
}

5.2定义Movies类(也就是列名、字典键)

from django.db import models

class Movies(models.Model):
    name=models.CharField(max_length=64)
    category=models.CharField(max_length=64)
    date=models.CharField(max_length=64)

    class Meta:
        db_table="t_movies"

5.3创建表

makemigrations detail
migrate detail

5.4创建函数方法(也就是进行增删改查操作)

from django.shortcuts import render
from detail.models import Movies

def add(request):
    if request.method=="GET":
        return render(request, 'addmovies.html')
    elif request.method=="POST":
        movies=Movies()
        movies.name=request.POST.get("name")
        movies.category=request.POST.get("category")
        movies.date=request.POST.get("date")
        movies.save()
        # return select(request)
        return redirect(to= reverse('movielist'))       #重定向方式

def select(request):
    movies=Movies.objects.all()   #字典
    return render(request,'movielist.html',context={'movies':movies})

5.5设置路由(调用函数至网页文件)

from django.contrib import admin
from django.conf.urls import url

from detail import views
urlpatterns = [
    url('admin/', admin.site.urls),
    url('addmovies/',views.add),
    url('movielist/',views.select,name='movielist')     #重定向方式
    #url('movielist/',views.select)
]

5.6网页文件

添加记录的页面

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="http://127.0.0.1:8000/addmovies/" method="POST">
        请输入电影名称:<input type="text"  name="name"><br>
        请输入电影类型:<input type="text" name="category"><br>
        请输入时间:<input type="text"  name="date"><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

查询记录的页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>movie list</title>
</head>
<body>
    <table border="1" cellspacing="0">
        <tr>
            <th>name</th>
            <th>category</th>
            <th>date</th>
        </tr>
        {% for movie in movies %}
            <tr>
                <td>{{ movie.name }}</td>
                <td>{{ movie.category }}</td>
                <td>{{ movie.date }}</td>
            </tr>
        {% endfor %}
    </table>
</body>
</html>

5.7查看效果

添加页面

提交后跳转到电影列表页面

查看数据库