(一)、启动服务器
E:\ScienceSoft\Python\Django\Django_project>python manage.py runserver 0.0.0.0:8
000
Performing system checks...
System check identified no issues (0 silenced).
July 22, 2017 - 17:00:33
Django version 1.11.3, using settings 'Django_project.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CTRL-BREAK.
(二)、创建数据库表 或 更改数据库表或字段
E:\ScienceSoft\Python\Django\Django_project>python manage.py makemigrations
No changes detected
E:\ScienceSoft\Python\Django\Django_project>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
No migrations to apply.
Django 1.7.1及以上 用以下命令
1. 创建更改的文件
python manage.py makemigrations
2. 将生成的py文件应用到数据库
python manage.py migrate
这种方法可以在SQL等数据库中创建与models.py代码对应的表,不需要自己手动执行SQL。
(三) 、使用开发服务器:python manage.py runserver
3.1清空数据库
命令会询问是 yes 还是 no, 选择 yes 会把数据全部清空掉,只留下空表
python manage.py flush
3.2 创建超级管理员
python manage.py createsuperuser
按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
修改 用户密码可以用:
python manage.py changepassword username
我的用户名和密码:sky和Q。。。。123
E:\ScienceSoft\Python\Django\Django_project>python manage.py createsuperuser
Username (leave blank to use 'administrator'): sky
Email address:
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is entirely numeric.
Password:
Password (again):
This password is too common.
This password is entirely numeric.
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
Password:
Password (again):
Superuser created successfully.
(四)、安装bpython
(五)、 Django与数据库
Django 会自动进入在settings.py中设置的数据库:
问题:
1、Django入门:python manage.py dbshell错误
学习SQLite是为了在Django上用,因此我更关注与Django相关的。
解决:
1、下载sqlite3【[http://www.sqlite.org/sqlite-shell-win32-x86-3071401.zip](http://www.sqlite.org/sqlite-shell-win32-x86-3071401.zip)】
2、将sqlite3.exe文件放入(C:\Windwos\System32)中 ,如果是win 7 64位系统则放入C:\Windows\SysWOW64
3、E:\ScienceSoft\Python\Django\Django_project> manage.py dbshell
E:\ScienceSoft\Python\Django\Django_project>python manage.py dbshell
CommandError: You appear not to have the 'sqlite3' program installed or on your
path.
E:\ScienceSoft\Python\Django\Django_project>python manage.py dbshell
SQLite version 3.7.14.1 2012-10-04 19:37:12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
django-admin.py dbshell可以打开sqlite3命令行shell。该命令需要DJANGO_SETTINGS_MODULE中指定相应的数据库。它与整个django相关的。如果打开项目指定的数据库shell,需要利用manage.py 代替上面的django-admin.py。
如没安装sqlite3,会提示:
Error: You appear not to have the 'sqlite3' program installed or no your path.
由于python只是集成了sqlite3的库文件,并不提供sqlite3程序。要用它的shell要安装下。
sqlite3一些常见命令
SQL;直接执行sql语句。
.help 帮助
.database 查看数据库
.exit .quit 退出
.table 查看表
.dump table 查看SQL语句
(六) 、 Django 视图与网址
urls.py :网址
views.py:正则表达式对应于其中的一个函数(或者generic类)
1.创建项目Django_project
django-admin startproject Django_project
Django_project
├── manage.py
└── Django_project
├── init.py
├── settings.py
├── urls.py
└── wsgi.py
我们会发现执行命令后,新建了一个 Django_project 目录,其中还有一个Django_project 目录,这个子目录 Django_project中是一些项目的设置 settings.py 文件,总的urls配置文件 urls.py 以及部署服务器时用到的 wsgi.py 文件, init.py 是python包的目录结构必须的,与调用有关。
我们到外层那个 Django_project目录下(不是Django_project中的Django_project目录)
(七)、 新建一个应用(app), 名称叫 learn
image.png
1.添加app到settings.py中
settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 添加部分如下:添加新的app
'learn',
]
新建的 app 如果不加到 INSTALL_APPS 中的话, django 就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件)
2.定义视图函数(访问页面时的内容)
learn目录下的view.py:
from django.shortcuts import render
# Create your views here.
# 定义视图函数(访问页面时的内容)
from django.http import HttpResponse
def index(request):
return HttpResponse(u"我的新建 APP !")
第一行是声明编码为utf-8, 因为我们在代码中用到了中文,如果不声明就报错.
第二行引入HttpResponse,它是用来向网页返回内容的,
就像Python中的 print 一样,只不过 HttpResponse 是把内容显示到网页上。
3.怎么让网址和函数关联起来呢?定义视图函数相关的URL(网址) (即规定 访问什么网址对应什么内容)
Django_project\Django_project下的urls.py:
from django.conf.urls import url
from django.contrib import admin
# 添加
from learn import views as learn_views # 取别名
urlpatterns = [
# 添加
url(r'^$', learn_views.index), # new
url(r'^admin/', admin.site.urls),
]
一共修改了settings.py, views.py,urls.py,apps.py
启动服务器 python manage.py runserver,http://127.0.0.1:8000/在浏览器中打开后显示:views.py中的内容
image.png
Django中的 urls.py 用的是正则进行匹配的,如果不熟悉,您可以学习正则表达式以及Python正则表达式。
(七)、开始再新建项目Developer
在网页上做加减法
修改Developer/calc下的views.py:
from django.shortcuts import render
# Create your views here.
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
# 在网页上做加减法
def add(request):
a = request.GET['a']
b= request.GET['b']
c = int(a)+int(b)
return HttpResponse(str(c))
# 注:request.GET 类似于一个字典,更好的办法
# 是用 request.GET.get('a', 0) 当没有传递 a 的时候默认 a 为 0
在修改Developer下的urls.py:
添加一个网址来对应我们刚才新建的视图函数
from django.conf.urls import url
from django.contrib import admin
from calc import views as calc_views
urlpatterns = [
# 添加一个网址来对应learn下的views.py中新建的视图函数
url(r'^add/$', calc_views.add, name='add')
# name相当于“给网址取了个名字”,只要这个名字不变,网址变了也能通过名字获取到
#url(r'^admin/', admin.site.urls),
]
image.png
这是因为我们并没有传值进去,我们在后面加上?a=4&b=5,即访问 http://127.0.0.1:8001/add/?a=4&b=5
就可以看到网页上显示一个 9,试着改变一下a和b对应的值试试看?
注意:如果打开8000端口会访问失败,原因是前面创建的项目已将占用了端口8000
所以此处改为8001
image.png
image.png
2.采用 /add/3/4/ 这样的网址的方式
修改 calc/views.py文件,再新定义一个add2 函数
views.py:
ws here.
from django.http import HttpResponse
# 在网页上做加减法
def add(request):
a = request.GET['a']
b= request.GET['b']
c = int(a)+int(b)
return HttpResponse(str(c))
def add2(request, a, b):
c = int(a) + int(b)
return HttpResponse(str(c))
接着修改Developer/urls.py 文件,再添加一个新的 url
可以看到网址中多了 (\d+), 正则表达式中 \d 代表一个数字,+ 代表一个或多个前面的字符,写在一起 \d+ 就是一个或多个数字,用括号括起来的意思是保存为一个子组
每一个子组将作为一个参数,被 views.py 中的对应视图函数接收。
http://127.0.0.1:8001/add/24/5/在浏览器中打开:
image.png
4.创建首页视图和url
Developer下的urls.py:
"""
from django.conf.urls import url
from django.contrib import admin
from calc import views as calc_views
urlpatterns = [
# 添加一个网址来对应learn下的views.py中新建的视图函数
url(r'^add/$', calc_views.add, name='add'),
#url(r'^admin/', admin.site.urls),
# 再添加一个新的url
url(r'^add/(\d+)/(\d+)/$', calc_views.add2, name='add2'),
# index是views.py中的函数名
url(r'^$', calc_views.index, name='home')
]
先建一个首页的视图和url修改 calc/views.py:
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
# render是渲染模板
# Create your views here.
def index(request):
return render(request, 'home.html')
# 在网页上做加减法
def add(req