创建基础的web服务
django-admin.py startproject project_nme //创建一个项目
cd project_name
py manage.py startapp app_name //创建一个app
py manage.py makemigrations //创建迁移文件
py manage.py migrate //根据默认的数据库迁移文件生成数据库文件
//创建超级用户
py manage.py createsuperuser //根据下面提示输入用户名和密码,email可以为空
//修改用户密码
py manage.py changepassword username
路由创建
from django.conf.urls import url
from django.contrib import admin
from learn import views as learn_views # new
urlpatterns = [
url(r'^$', learn_views.index), # new
url(r'^admin/', admin.site.urls),
url(r'^cal/(\d+)/(\d+)$',modelAppViews.cal,name='cal')//resetful风格传参,通过正则匹配的方式传递url参数
]
html模板的for循环标签:
变量 描述
forloop.counter 索引从 1 开始算
forloop.counter0 索引从 0 开始算
forloop.revcounter 索引从最大长度到 1
forloop.revcounter0 索引从最大长度到 0
forloop.first 当遍历的元素为第一项时为真
forloop.last 当遍历的元素为最后一项时为真
forloop.parentloop 获取上一层 for 循环的 forloop
模板获取url
# views.py
def add(request, a, b):
c = int(a) + int(b)
return HttpResponse(str(c))
# urls.py
urlpatterns = patterns('',
url(r'^add/(\d+)/(\d+)/$', 'app.views.add', name='add'),
)
# template html
{% url 'add' 4 5 %}
模板中的逻辑运算:
比较符号前后必须有至少一个空格!
数据库(MYSQL)
安装扩展:
py -m pip install pymysql //安装pymysql,py3已经不支持mysqldb和mysqlclient了
配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': 'wdlinux.cn',
'HOST': 'localhost',
'PORT': '3306',
'CHARSET': 'utf8'
}
}
model 配置
model基础配置
class Author(models.Model):
name = models.CharField(max_length=50)
qq = models.CharField(max_length=10)
addr = models.TextField()
email = models.EmailField()
def __str__(self):
return self.name
添加数据库中不存在的字段
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
def my_property(self):
return self.first_name + ' ' + self.last_name
my_property.short_description = "Full name of the person"
full_name = property(my_property)
数据迁移
导出数据
python manage.py dumpdata [appname] > appname_data.json
导入数据
python manage.py loaddata blog_dump.json
缓存(Cache)
文件缓存
setting.py
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
'TIMEOUT': 600,
'OPTIONS': {
'MAX_ENTRIES': 1000
}
}
}
views.py
from django.shortcuts import render
from django.views.decorators.cache import cache_page
@cache_page(60 * 15) # 秒数,这里指缓存 15 分钟,不直接写900是为了提高可读性
def index(request):
# 读取数据库等 并渲染到网页
return render(request, 'index.html', {'queryset':queryset})