Django框架
最后更新于:2022-04-02 02:17:23
[TOC]
> [home](https://docs.djangoproject.com/zh-hans/2.2/)
## 基础
### 创建项目
>在想要安置项目的目录
命令行输入 :`django-admin startproject 项目名称`
无报错,则安装成功
*提示:window用户可以在文件管理器地址中输入cmd,会跳转到命令窗口*
### 启动服务器
>`python manage.py runserver [端口号]` 启动
>端口号可不填
### 创建应用
>在命令行输入`python manage.py startapp blog` blog 为应用名
>把应用名添加到settings.py中的`INSTALLED_APPS`中
```
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog' #新增应用
]
```
### 创建一个页面(响应)
1. 在`/blog/views.py`中
```
from django.http import HttpResponse
def index(request): #接受参数 默认为request
return HttpResponse('hello word')
```
2. 在`/mysite/urls.py`中-优化url见下标签
```
import blog.views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', blog.views.index),
]
```
### url配置
1. 在`/mysite/urls.py`中
```
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')), # 使用include()函数
]
```
2. 复制`urls.py`至在`/blog/urls.py`
```
from django.conf.urls import url, include
from . import views
urlpatterns = [
url(r'^index/$', views.index), #index 后要加'/'
]
```
### Template
1. 在`/blog`中创建`templtes`目录
2. 在`templtes`中创建如 `index.html`文件
3. 在`views.py`中
```
def index(request):
return render(request,'index.html',{"hello":"hello,blog!"})
```
4.在模版中用`{{hello}}`调用
**template文件名冲突**
在templates中html文件前加入模版的目录
如`/blog/templates/blog/index.html`
修改views.py文件的目录
```
def index(request):
return render(request,'blog/index.html',{"hello":"hello,blog!"})
```
**template文件目录会根据INSTALLED_APPS 的顺序查找**
4. 获取数据
`/blog/views.py`中
```
from . import models
def index(request):
oneArticle = models.Article.objects.get(pk = 1)
return render(request,'index.html',{"artcile":oneArticle})
```
`/blog/templates/index.html`中
```
{{article.title}}
{% endfor %}
#文章数据
article = models.Article.objects.get(pk=article_id)
return render(request,'blog/article_page.html',{'article':article})
```
>注:objects必须加`s`
#### 超链接的两种渲染
方法一(推荐)
```
href="/blog/details/{{article.id}}"
```
方法二
```python
#语法
{% url "app_name:url_name" param %}
--> `app_name` 在`url(r'^blog/', include('blog.urls',namespace='blog'))`配置
--> `url_name` 在 `url(r'^details/(?P\d)$', views.article_page,name='article_page'),`
#实例
{% url 'blog:article_page' article.id %}
```
#### 表单处理
1. 在`form`表单中加入`{% csrf_token %}`
2. 接受参数并跳转首页
```
#查
article = models.Article.objects.get(pk=id)
#增
models.Article.objects.create(title=title, content=content)
#改
article = models.Article.objects.get(pk=id)
article.content = content
article.sav e()
#删
Article = models.Article.objects.get(pk=2)
Article.delete()
```
#### Django Shell
>用命令行操作数据
```
#启动
python manage.py shell
#实例
from blog.models import Article
Article.objects.all() #打印所有Article数据
```
## 数据迁移
如何引入一些 django 自带的功能,需要数据库,则需要执行数据迁移工作
`python manage.py migrate`
';