Django数据库模型字段类型汇总

Django数据库模型的字段类型汇总

models.CharField(max_length=250) #varchar,普通可变字符串
models.EmailField(max_length=100) #varchar,邮箱可变字符串
models.URLField(verify_exists=True, max_length=200,) #varchar,URL可变字符串
models.IPAddressField(max_length=100) #varchar, IP
models.FilePathField(path=None, match=None, recursive=False, max_length=100,) #varchar,文件路径
models.SlugField(max_length=50,) #varchar,索引标签

models.IntegerField() #int
models.PositiveIntegerField() #int 正整数
models.SmallIntegerField() #smallint
models.PositiveSmallIntegerField([**options]) #smallint 正整数
models.AutoField() #int;一个自动递增的整型字段,添加记录时它会自动增长。你通常不需要直接使用这个字段;如果你不指定主键的话,系统会自动添加一个主键字段到你的model
models.DecimalField(max_digits=None, decimal_places=None) #decimal
models.FloatField() #real

models.BooleanField() #boolean或bit,布尔类型
models.NullBooleanField() #bit字段上可以设置上null值

models.DateField(auto_now=False, auto_now_add=False,) #date
#auto_now最后修改记录的日期;auto_now_add添加记录的日期
models.DateTimeField(auto_now=False,auto_now_add=False,) #datetime
models.TimeField(auto_now=False, auto_now_add=False,) #time

models.TextField() #text
models.XMLField(schema_path=None)#text

models.ForeignKey(othermodel) #外键,关联其它模型,创建关联索引
models.ManyToManyField(othermodel) #多对多,关联其它模型,创建关联表
models.OneToOneField(othermodel, parent_link=False,)#一对一,字段关联表属性

#详细介绍参考:http://www.cnblogs.com/lhj588/archive/2012/05/24/2516040.html

Django学习笔记

#实例化django项目 在项目目录下执行
django-admin startproject webscan

#创建app项目 /webscan/目录执行
python manage.py startapp appscan

#加载app 在/webscan/webscan/settings.py
INSTALL_APPS中添加 appscan

#默认静态文件配置
STATIC_URL = ‘/static/’ #创建该目录 mkdir

#settings.py文件头部配置,防止中文出错、默认以ASCII码保存的,换为UTF-8
#coding=utf-8
## 配置数据库信息,配置之前使用phpmyadmin创建webscan数据库
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘webscan’,
‘USER’: ‘root’,
‘PASSWORD’: ‘root’,
‘HOST’: ‘127.0.0.1’,
‘PORT’: ‘3306’,
}
}

#初始化数据库
python manage.py syncdb #新版的是用 migrate

#第一次会提示初始化超级管理员
You have installed Django’s auth system, and don’t have any superusers defined.
Would you like to create one now? (yes/no): yes
#输入yes,账户,密码…
#如果没有提示则用 python manage.py createsuperuser 命令创建账户

#更新数据库
python manage.py migrate

#定义视图函数~/appdemo/views.py
# coding = utf-8
from django.http import HttpResponse #区分大小写…
def index(request):
return HttpResponse(u’hello world!’)

#定义访问url ~/app_pro/app_pro
from appdemo import views as appdemo_views # 引入视图
#配置url(正则,模块)
url(r’^$’,appdemo_views.index),

#启动项目
root@0535coder:~/mysite# ./manage.py runserver
#这种启动方式,可以要局域网访问
root@0535coder:~/mysite# ./manage.py runserver 0.0.0.0:8000

#自定义模块的URL路由规则
url(r’^xxs/’, calc_views.add, name=’xxs’)
{% url ‘xxs’ %}#模版中获取

#get方式获取一个参数
request.GET[‘xxs’]

#在函数传参,获取参数
def xxs(request, xxs1,xxs2):
return HttpResponse(xxs1)

#获取URL模块 传参,第一个参数与urls.py中的patterns配置关联
url(r’^xxs/$’,appdemo_views.xxs,name = ‘xxs’),
reverse(‘xxs’, args=(alert0,alert1))

#页面模版中调用url
#不带参数的:
{% url ‘name’ %}
#带参数的:参数可以是变量名
{% url ‘name’ 参数 %}

#重定向方法
HttpResponseRedirect()

#模版渲染
from django.shortcuts import render
#在app目录下新建模版路径templates,默认配置下,Django 的模板系统会自动找到app下面的templates文件夹中的模板文件。
#mysite/appdemo/views.py
def home(request):
return render(request,”home.html”)
#mysite/mysite/urls.py
url(r’^home/’,appdemo_views.home),
#mysite/appdemo/templates/home.html

#默认标题
{% block title %}默认标题{% endblock %}

#模版文件包含
{% include ‘header.html’ %}

#默认内容
{% block content %}

这里是默认内容,所有继承自这个模板的,如果不覆盖就显示这里的默认内容。

{% endblock %}

#继承页面
{% extends ‘base.html’ %}

#模版标签
def home(request):
tag = u”thinkphp -> assign!”
return render(request,’home.html’,{‘tag’:tag})
引用{{tag}}

#模版中获取当前时间
from datetime import datetime
def home(request):
tag = u”thinkphp -> assign!”
now = datetime.now().strftime(“%Y-%m-%d %H:%I:%S”)
return render(request,’home.html’,{‘tag’:tag,’now’:now})
#return render(request,”home.html”)

#app项目静态文件
放入app目录下的static文件件下,访问url/static/…

#urls.py配置name属性,模版访问url方式
不带参数的:
{% url ‘name’ %}
带参数的:参数可以是变量名
{% url ‘name’ 参数 %}

#数据库操作
from 模型名models import *
#查询所有数据
db = 模型名.objects.all()
#增加记录集
db = 模型名(字段1=”1″,字段2=”2″)
db.save()
#排序orderby
db = 模型名.objects.all()。order_by(“排序字段,升序”)
db = 模型名.objects.all()。order_by(“-排序字段,降序”)
#更新记录集
db = 模型名.objects.get(字段名=’hello world’)
db.字段名= “this is html!”
#删除记录集
db = 模型名.objects.get(字段名=’hello world’)
db.delete()

# SECURITY WARNING: don’t run with debug turned on in production!
# 项目部署时,设置为False,禁止开启调试模式
DEBUG = True

#######django遇到问题汇总#######

#web页面打印变量
from django.http import HttpResponse
使用 return HttpResponse(“qqqqq”) 即可打印到页面中去

#使用settings.py中的常量
from django.conf import settings

#使用django shell模式调试
python manage.py shell

#定义异常404页面
try:
pass
except Question.DoesNotExist:
raise Http404(“test does not exist”)

#增加同步数据库
python manage.py makemigrations
python manage.py migrate

# 最后需要本本地的扩展打包下:
Django==1.10.5
MySQL-python==1.2.5
backports-abc==0.5
beautifulsoup4==4.5.3
certifi==2016.9.26
lxml==3.6.0
pymongo==3.4.0
requests==2.12.3
singledispatch==3.4.0.3
six==1.10.0
tornado==4.4.2

# 打包命令
# pip freeze > requirements.txt

# 安装命令
# pip install -r requirements.txt

#使用admin模块

python manage.py createsuperuser #创建

#注册数据库表 到admin.py 后台
from appscan.models import spider
admin.site.register(spider)

#关闭debug模式时不加载静态资源处理
#python manage.py runserver 0.0.0.0:80 –insecure

memcache 端口11211 未授权访问漏洞

stats items #获取item
stats cachedump 1 0 #获取key,第一个数字为表序,第二个数字为返回几个
get key #获取key-》value

stats slabs #获取各个slab的信息,包括chunk的大小、数目、使用情况等
stats sizes #第一列是 item 的大小,第二列是 item 的个数

STAT total_items 34 #item总数

学习memcache 用法参考:
http://www.runoob.com/memcached/memcached-stats.html

验证:
nmap -p 11211 –script=banner 0535code.com #看返回banner后,用telnet连接

#案例:
1.24.223.130 #金山毒霸企业版未授权访问,百度搜相关关键词能搜出一堆噢、没有深入研究getshell、