屏幕快照 2017-11-19 13.24.25.png
一:创建项目
在自己的pycharm中使用的是python3
- 1 : creat project
- 2: 选择Django的项目
- 3: 在最下面Application name 填写自己项目的名称
- 4:Location 工程的地址
在models写好相关代码,然后在setting文件中已经在创建好项目的时候把APP的INSTALLED_APPS名称加入到里面
二: 执行操作
- 1 打开Pycharm下面的的Terminal 输入
python3 manage.py makemigrations
屏幕快照 2017-11-18 22.58.04.png
- 2 更具上面生成的迁移对象,执行下面的命令来生成seq语句
python3 manage.py migrate
屏幕快照 2017-11-19 10.12.21.png
- 3 增加数据和删除数据可以在shell操作里进行
三 创建超级管理员
python3 manage.py createsuperuser
屏幕快照 2017-11-19 10.56.13.png
1 启动服务 默认是8000端口 如果被暂用 需要自己指定
python3 manage.py runserver
屏幕快照 2017-11-19 10.57.37.png
2 在浏览器中打开下面的地址,把你刚才的账户密码写进去登录
http://127.0.0.1:8000/admin
屏幕快照 2017-11-19 11.00.23.png
- 3 这时候会看到上面的界面,都是英文的不好看 你可以修改setting文件来显示中文
LANGUAGE_CODE = zh-hans'
还可以对时区进行修改
屏幕快照 2017-11-19 12.01.46.png
- 5 如果想让创建的BookInfo添加到页面中,需要在admin.py中进行注册
- 5.1 python2中
from django.contrib import admin
from models import *
from.site.register(BookInfo)
- 5.2 python3中
from django.contrib import admin
from .models import *
from.site.register(BookInfo)
6 在有的Django版本中,在界面添加数据的时候,如果添加的有中文的情况下会出错屏幕快照 2017-11-19 11.22.56.png
7 原因是由于我们的代码在定义BookInfo中有对类属性的字符串输出,那个地方没有进行格式编码处理
屏幕快照 2017-11-19 11.24.52.png
如果你的没有出现报错,则上面的步骤不需要处理
四 自定义界面
1:在admin.py需要先注册自定义的类
image.png
五 关联对象
6E3C213F-D8F4-4951-9341-7B34219331A2.png
5.1 在book中添加对象的时候会看到下面多出3个英雄的界面
屏幕快照 2017-11-19 13.35.15.png
TabularInline
是表格形式
屏幕快照 2017-11-19 13.37.24.png
屏幕快照 2017-11-19 13.36.57.png
六 view的简单制定
-
1 : 在view中先注册pycharm提供的导入头文件,自己先用自定义的方式来创建
548595BA-D2A5-4453-8756-663162D46097.png -
2 : 在booktest目录下创建自己的urls.py文件,定义自己app中的url
6315BD76-2266-428B-98DE-B15AD1A969A4.png 3 : 在项目中的urls.py中配置自己刚才app中定义的urls
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('booktest.urls'))
]
七 定义模板
- 1 : 如果你是没有直接用pycharm创建的项目,而是用的命令创建的项目,则项目目录中没有templates文件夹目录,则需要在pycharm手动创建
-
1.1 注意 手动创建此目录,系统不会在setting文件中去注册,rutemplates,如果没有请加上
1481AA49-DF9B-40C1-9C1F-A44D7ED6123F.png -
1.2 然后在templates文件下创建文件夹(booktest),在booktest下创建index.html模板
368DBAD9-321A-4C58-A426-3D9F9A59B192.png -
1.3 如果没有按上面做会报错
屏幕快照 2017-11-19 14.24.32.png
-
-
2 :在view中导入自己定义的模板.
3DCE20E1-A05C-4A3D-9905-C538DAA831F4.png-
2.1 不用上面的手动,用rendom函数,结果是一样的
EA0FDDDE-816D-49A4-B40D-235813E36D2A.png
-
-
3 把模型中的数据展示在view中
3.1 在html中
C51FA7ED-EB84-43C5-8434-C9799CAAD107.png
3.2 在views中
CD034F71-9780-4C73-81AB-0EE2E6DFCBA7.png
八 详细展示
- 1 : views.py中定义要展示的方法
def show(request, id):
# 根据id获取一本书
bookinfo = BookInfo.objects.get(pk=id)
# 从书对象中获取对应所有的英雄
herolist = bookinfo.heroinfo_set.all()
context = {"list": herolist}
return render(request, 'booktest/show.html', context)
- 2 在urls中定义要要show方法的规则
from django.conf.urls import url
from . import views
urlpatterns=[
url(r'^$', views.index),
url(r'(\d+)', views.show) #匹配到数据将调用views中的show方法
]
- 3 : 创建自己的show模板html(一定要注意格式,否则会报错)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<url>
{%for hero in list%}
<li>{{hero.hname}}</li>
{% endfor %}
</url>
</body>
</html>
九 最终效果
A2CF7C66-1679-4C04-900B-4D65DF505D94.png
EF985B97-126A-44F0-9E24-79261CCCA901.png