windows命令提示行中:
创建虚拟环境安装包
pip install virtualenv
检查是否安装成功
virtualenv创建env虚拟环境
C盘下新建一个env目录, 命令窗口中进入env目录, 运行下面命令 意思是把虚拟环境安装在testenv下
virtualenv –no-site-packages(指定创建的env环境下不需要此安装包) -p(指定python版本) xxx(指定python版本的安装路径) testenv(指定创建虚拟环境的目录,自动创建)
进入Scripts目录下: 安装pymysql : pip install pymysql进入虚拟环境
source bin/avtivate(安装路径下运行activate)
退出虚拟环境
deactivate
安装Django:
进入虚拟环境: activate
pip install django==1.11 (后面指定django安装的版本)创建django项目
新建一个目录workspace, 进入该目录下:
django-admin startproject helloworld
进入 helloworld 目录下, 运行:
python manage.py runserver 0.0.0.0:8000(后面地址可不写,0.0.0.0让其它电脑可连
接到开发服务器,
8000 为端口号。如果不说明,那么端口号默认为 8000。)查看目录结构
tree /f
项目下settings.py文件:
调整语言:
LANGUAGE_CODE = ‘zh-hans’
调整时区:
TIME_ZONE = ‘Asia/Shanghai’在浏览器输入127.0.0.1:8000
会显示正常工作了
启动django项目
python manage.py runserver ip:端口
pycharm中操作django:
django是在虚拟环境下运行的:
settings –> 配置Django解释器C:env/testenv/Script/python.exe --> apply --> ok
terminal –> 看看是不在虚拟环境下:(testenv) C:workspace/helloword>
调整浏览器访问时页面的语言和时区:
settings.py –> 修改LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai'
配置浏览器访问接口默认8000,修改后8080:
菜单栏 –> Run –> debug –>编译配置文件 –> 点击 ‘+’ –> 添加 python –> name:自己定义 –> runserver 8080(启动服务器 配置一个8080接口 ) –> apply –> debug –> terminal查看创建app
python manage.py startapp appname
创建app要在项目下的settings.py的INSTALLED_APPS中要添加’appname’
app:
init.py:初始化
admin.py:管理后台注册模型
apps.py: settings.py里面注册app的时候需要使用到。
一般不推荐这样使用:from appname.apps import AppConfig
models.py:写模型的地方
views.py:写处理业务逻辑的地方框架:
url 请求 使用urls分配对应的方法 一个url对应一个方法
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'hello', views.first_hello) ]
所有的url请求都写在这里面, 正则表达式检索hello请求 , 分配方法views.first_hello
方法在创建的app中的views.py中定义:
def first_hello(request): return HttpResponse('helloworld')
运行程序 –> 浏览器输入127.0.0.1:8080/admin 会返回一个页面因为在urls.py中分配的有方法
浏览器输入127.0.0.1:8080/hello 会返回一个一个页面, 在urls.py中同样定义的有方法
urls.py中定义所有的url请求, 但是请求只能访问一个, 访问一个请求时 , 要把其他的检索注销, 正则表达式后面加上/,例url(r’^admin/’, admin.site.urls) 这一样在执行其他url时就不会执行这个命令了给每一个app绑定一个处理方法:
项目下 –> urls.py:
url(r'appname/', include('appname.urls'))
app下 –> 新建urls.py文件中:
from django.conf.urls import url from stu import views urlpatterns = [ url(r'addstu/', views.addStudent) ]
app下 –> views.py文件中:
from django.http import HttpResponse
def addStudent(request):
return HttpResponse(‘添加成功’)运行项目:浏览器输入127.0.0.1:8000/appname/正则表达式匹配的内容
django访问数据库创建表格(使用pycharm):
项目下–>settings.py–>DATABASE:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST':'localhost', 'USER': 'root', 'PASSWORD': '123123', 'PORT': '3306', 'NAME': 'firsthello' } }
指定要访问的数据库类型是mysql,以及数据库的名称firsthello, ‘NAME’是在navicat for mysql 中新建的数据库的名称, 使用Navicat创建数据库,打开navicat–>连接服务器(此处连接的是本地)–> 右键 –> 新建数据库
数据库名称:firsthello; 字符集:utf8; 排序规则:utf8_general_ci
项目下 –> init.py文件中加上一句话:
import pymysql pymysql.install_as_MySQLdb()
创建的app–>models.py(编译表格的列,并定义表格的名称):
from django.db import models class Student(models.Model): name = models.CharField(max_length=20) sex = models.BooleanField() class Meta: db_table = 'stu'
app下 –> urls.py:
# -*- coding:utf-8 -*- from django.conf.urls import url from stu import views urlpatterns = [ url(r'addstu/', views.addStudent) ]
app下 –> views.py:
from django.http import HttpResponse 从模型中导入定义的表格类: from stu.models import Student 定义请求返回: def addStudent(request): 定义表格的内容: stu = Student() stu.name = '张三' stu.sex = 1 保存表格 stu.save() return HttpResponse('添加成功')
迁移数据库(pycharm 的 terminal 中执行):
workspace是我的C盘下专门用来存放django项目的目录,
表示在虚拟环境下执行如下命令:
(testenv) C:workspace/helloword>python manage.py makemigrations python manage.py migrate
以上只有在浏览器中请求才会执行views.py文件, navicat刷新表格才会显示内容
附加:
环境变量path:为操作系统运行指定要运行的参数,
当在当前目录下找不到时, 到path 下去找
pip list
pip unstall + packagename
pip install + packagename
Python中字符串前面加上 r 表示原生字符串
MVT :url(http请求) urls(路由) model(模型) view(视图) templates
MCT :url urls controller model view