安装 - pip install django
验证:
>>> import django
>>> print(django.get_version())
1.8
开始第一个实例
1. 创建项目
- 创建项目
django-admin startproject siteName
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
- settings.py中的相关设置
- 数据库设置 -- 这里使用默认的SQLite3
- TIME_ZONE
- INSTALLED_APPS -
manage.py migrate
- 验证 -
manage.py runserver ip:port
- 创建应用模块 -
manage.py startapp appName
polls/
__init__.py
admin.py
migrations/
__init__.py
models.py
tests.py
views.py
- 在
models.py
中创建数据的model - 将appName加入到
INSTALLED_APPS
中
再执行manage.py makemigrations appName
you’re telling Django that you’ve made some changes to your models
- 在数据库中创建model表 -
manage.py migrate
before this, run
manage.py sqlmigrate polls 0001
can see what SQL that migration would run
- 可在django shell中已类的方式操作db中的modul
2. 创建admin
manage.py createsuperuser
lcoalhost:8000/admin/
- 在admin.py中注册待管理的modul
注:卡住的地方
- 修改页面title及项目名称时,直接在base_site.html中修改不起作用
原因: 在django的导入文件中有默认定义,需要删除
3. 创建视图
- 在应用目录下创建urls.py 来解析本应用中的views
- 在项目管理目录下的urls.py文件中添加对应用目录的解析
注:卡住的地方
- 配置好url后访问 localhost:8000/polls 返回polls未定义
原因:浏览器没有在请求url后面自动添加'/', 导致目录无法解析, 需手动添加
4. 使用通用的视图
- 在应用template中添加表单提交的模板html
- 通过views.generic重写, 通过pk查找
涉及的views:
generic.ListView
- 获取model实例对象列表,
generic.DetailView
- 获取单个数据数据对象的信息
5. 测试
balabalabala
详细用法
1. template
- 基本语法
-
变量\成员变量\成员函数:
{{ varName }}
\{{className.name}}
\{{className.getName}}
- if 语句:
- 没有()条件的用法
* 逻辑判断 `and` `or` `not`
{% if %}
...
{% elif %}
...
{% endif %}
- for 语句:
- 没有 break continue的用法
* for关键字: `empty` `reversed`
* forloop相关:
forloop.counter
forloop.counter0
forloop.revcounter
forloop.revcounter0
forloop.first
forloop.last
{% for k in list reversed %}
...
{% empty %} -- 如果没有list
...
{% if forloop.first %}
...
{% endif %}
...
{% if forloop.last%}
...
{% endif %}
{% endfor %}
- 过滤器
-
django自带 -
|
例如:
{{ timenow | date:"Y-m-d" }}
{{ txt | upper}}
- 自定义
- 在应用下面创建名为
templatetags
文件夹, 创建__init__.py
* 创建相应的过滤器文件, 定义过滤器处理函数, 注册到模板库中
* 在使用之前,先将过滤器文件load进来
目录: appName/templatetags/filter_test.py
import django from template
def test_func_fliter(value):
return value
register = template.Library()
register.filter(test_func_filter)
目录:appName/templates/view_template.htnl
{% load filter_test %}
{{ varilables | test_func_fliter}}
未完待续...