### 服务器
* 运行如下命令可以开启服务器
~~~
python manage.py runserver ip:port
~~~
* 可以不写ip,默认端口为8000
* 这是一个纯python编写的轻量级web服务器,仅在开发阶段使用
* 服务器成功启动后,提示如下信息
![](https://box.kancloud.cn/9d9c86e5afa3ab4526ef05615e62a7cd_564x153.png)
* 默认端口是8000,可以修改端口
~~~
python manage.py runserver 8080
~~~
* 打开浏览器,输入网址“127.0.0.1:8000”可以打开默认页面
* 如果修改文件不需要重启服务器,如果增删文件需要重启服务器
* 通过ctrl+c停止服务器
* * * * *
### 管理操作
* 站点分为“内容发布”和“公共访问”两部分
* “内容发布”的部分负责添加、修改、删除内容,开发这些重复的功能是一件单调乏味、缺乏创造力的工作。为此,Django会根据定义的模型类完全自动地生成管理模块
#### 使用django的管理
* 创建一个管理员用户
~~~
python manage.py createsuperuser,按提示输入用户名、邮箱、密码
~~~
* 启动服务器,通过“127.0.0.1:8000/admin”访问,输入上面创建的用户名、密码完成登录
* 进入管理站点,默认可以对groups、users进行管理
#### 管理界面本地化
* 编辑settings.py文件,设置编码、时区
~~~
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
~~~
#### 向admin注册booktest的模型
* 打开booktest/admin.py文件,注册模型
~~~
from django.contrib import admin
from models import BookInfo
admin.site.register(BookInfo)
~~~
* 刷新管理页面,可以对BookInfo的数据进行增删改查操作
>[warning] 问题:如果在str方法中返回中文,在修改和添加时会报ascii的错误
>[success] 解决:在str()方法中,将字符串末尾添加“.encode('utf-8')”
#### 自定义管理页面
* Django提供了admin.ModelAdmin类
* 通过定义ModelAdmin的子类,来定义模型在Admin界面的显示方式
~~~
class QuestionAdmin(admin.ModelAdmin):
...
admin.site.register(Question, QuestionAdmin)
~~~
**列表页属性**
* list_display:显示字段,可以点击列头进行排序
~~~
list_display = ['pk', 'btitle', 'bpub_date']
~~~
* list_filter:过滤字段,过滤框会出现在右侧
~~~
list_filter = ['btitle']
~~~
* search_fields:搜索字段,搜索框会出现在上侧
~~~
search_fields = ['btitle']
~~~
* list_per_page:分页,分页框会出现在下侧
~~~
list_per_page = 10
~~~
**添加、修改页属性**
* fields:属性的先后顺序
~~~
fields = ['bpub_date', 'btitle']
~~~
* fieldsets:属性分组
~~~
fieldsets = [
('basic',{'fields': ['btitle']}),
('more', {'fields': ['bpub_date']}),
]
~~~
#### 关联对象
* 对于HeroInfo模型类,有两种注册方式
* 方式一:与BookInfo模型类相同
* 方式二:关联注册
* 按照BookInfor的注册方式完成HeroInfo的注册
* 接下来实现关联注册
~~~
from django.contrib import admin
from models import BookInfo,HeroInfo
class HeroInfoInline(admin.StackedInline):
model = HeroInfo
extra = 2
class BookInfoAdmin(admin.ModelAdmin):
inlines = [HeroInfoInline]
admin.site.register(BookInfo, BookInfoAdmin)
~~~
可以将内嵌的方式改为表格
~~~
class HeroInfoInline(admin.TabularInline)
~~~
#### 布尔值的显示
* 发布性别的显示不是一个直观的结果,可以使用方法进行封装
~~~
def gender(self):
if self.hgender:
return '男'
else:
return '女'
gender.short_description = '性别'
~~~
* 在admin注册中使用gender代替hgender
~~~
class HeroInfoAdmin(admin.ModelAdmin):
list_display = ['id', 'hname', 'gender', 'hcontent']
~~~
~~~
# admin.py
#!usr/bin/python
# -*- coding: utf-8 -*-
from django.contrib import admin
from models import *
# 关联类的添加
# class HeroInfoInline(admin.StackedInline):
# model = HeroInfo
# extra = 3 # 添加一个图书时候,添加3个英雄信息
class HeroInfoInline(admin.TabularInline): # 变成表格形式添加
model = HeroInfo
extra = 3 # 添加一个图书时候,添加3个英雄信息
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['id', 'btitle', 'bpub_date']
list_filter = ['btitle'] # 出现在右侧,过滤
search_fields = ['btitle'] # 搜索 支持模糊查询
list_per_page = 10 # 分页
fieldsets = [
('base', {'fields': ['btitle']}),
('super', {'fields': ['bpub_date']})
]
inlines = [HeroInfoInline]
admin.site.register(BookInfo, BookInfoAdmin) # 注册信息
admin.site.register(HeroInfo)
~~~
- 系统编程
- 1.进程
- 1.1.fork
- 1.2.多个进程能否修改全局变量
- 1.3多次fork的问题
- 1.4.进程的创建-multiprocessing
- 1.5.进程的创建-Process子类
- 1.6.进程池Pool
- 1.7.进程间通信--Queue
- 2.线程
- 2.1.多线程-Threading
- 2.2.threading注意点
- 2.3.多线程-共享全局变量
- 2.4.线程和进程的对比
- 2.5.同步
- 2.6.互斥锁
- 2.7.多线程-非共享数据
- 2.8.死锁
- 2.9.同步应用
- 2.10.生产者与消费者模式
- 2.11.ThreadLocal
- 2.12.异步
- 2.13.GIL的问题
- 网络编程
- 1.网络概述-udp
- 1.1.TCP/IP
- 1.2.端口
- 1.3.ip地址
- 1.4.socket简介
- 1.5.UDP介绍
- 1.6.udp网络程序-发送数据
- 1.7.udp网络程序-发送、接收数据
- 1.8.udp网络程序-端口问题
- 1.9.udp绑定信息
- 2.0.udp网络通信过程
- 2.1.udp应用:echo服务器
- 2.2.udp应用:聊天室
- 2.3.udp总结
- 2.4.udp综合-模拟QQ
- 2.TFTP下载和上传
- 3.TCP/IP
- 3.1.打开浏览器访问百度的过程
- web服务器
- 1.1.MyWebServer.py
- 1.2.MyWebFramework.py
- 正则
- 1.1.re模块
- 1.2.字符
- 1.3.原始字符串
- 1.4.表示数量
- 1.5.表示边界
- 1.6.匹配分组
- 1.7.贪婪和非贪婪
- 数据结构和算法
- 1.引入概念
- 1.1.第一次尝试
- 1.2.算法的提出
- 1.3.第二次尝试
- 1.4.算法效率衡量
- 1.5.算法分析
- 1.6.常见时间复杂度
- 1.7.python内置类型性能分析
- 1.8.数据结构
- 2.顺序表
- 2.1.顺序表的形式
- 2.2.顺序表的结构和实现
- 2.3.顺序表的操作
- 2.4.python中的顺序表
- 3.链表
- 3.1.单向链表
- 3.2.单向循环链表
- 3.3.双向链表
- 4.栈
- 4.1.栈的结构实现
- 5.队列
- 5.1.队列的实现
- 5.2.双端队列
- 6.排序和搜索
- 6.1.冒泡排序
- 6.2.选择排序
- 6.3.插入排序
- 6.4.快速排序
- 6.5.哈希排序
- 6.6.归并排序
- 6.7.常见排序算法效率比较
- 6.8.搜索
- 7.树与树算法
- 7.1.二叉树
- 7.2.二叉树的遍历
- 初识Django
- 1.小白
- 2.初次尝试
- 3.管理站点
- 4.视图
- 5.模板
- django模型
- 1.定义模型
- 2.模型成员
- 3.模型查询
- 4.自连接
- django视图
- django模板
- django高级
- django第三方
- django-git