启动
1 2
| >>> django-admin startproject helloDjango >>> python manage.py runserver
|
APP分类
- 内置:框架自带应用,admin(后台管理)、auth(身份鉴权)、sessions(会话管理)
- 自定义:实现自身业务逻辑
- 第三方:社区提供
结构
层次1
1 2 3 4 5 6 7
| django_news ├── django_news │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── manage.py
|
层次2 APP
1 2 3 4 5 6 7 8 9
| news ├── __init__.py ├── admin.py ├── apps.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py └── views.py
|
MTV法则
Model(模型)+Template(模板)+View(视图),类似于MVC
MVC法则(补充)
1 2 3 4 5 6 7 8 9 10
| INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", "news", ]
|
视图(业务逻辑)
模板
表达式插值
1 2 3
| <h1>{{ name }}</h> <p>{{ news.title }}</p> <p>{{ news.vistiors.0 }}</p>
|
条件语句
1 2 3 4 5
| {% if is_true %} <h1> Ti tis true! </h1> {% else %} <h1> It is false! </h1> {% endif %}
|
循环语句
1 2 3
| {% for elem in some_list %} <p>{{ elem }}</p> {% endfor %}
|
模型
和数据库进行联动
- 轻松切换各种关系型数据库
- ORM(对象关系映射)模块,免于使用SQL
- 数据库迁移机制,修改数据模式方便
ORM示例
1 2 3 4 5 6 7 8 9 10 11 12
|
Blog.objects.all()
Blog.objects.get(id=1)
blog = Blog(title='hello', content='world') blog.save()
|
数据库迁移
Django定义的模型转换为SQL代码*迁移文件),数据库进行更新表
1 2 3 4 5 6 7 8 9
| from django.db import models
class Post(models.Model): title = models.CharField(max_length=200) content = models.TextField()
def __str__(self): return self.title
|
1 2 3 4 5
| >>> python manage.py makemigrations
>>> python manage.py migrate
|
超级用户创建
1
| >>> python manage.py createsuperuser
|
配置后台管理接口
1 2 3 4 5
| from django.contrib import admin from .models import Post
admin.site.register(Post)
|
数据查询
1 2 3 4 5 6
| from django.shortcuts import render from .models import Post
def index(request): context = { 'news_list': Post.objects.all() } return render(request, 'news/index.html', context=context)
|