python web开发-django
1、将默认的sqlite3数据库修改为Mysql的配置
DATABASES ={ 'default':{ 'ENGINE': 'django.db.backends.mysql', 'NAME': '你的数据库名', 'USER': '你的MySQL用户名', 'PASSWORD': '你的密码', 'HOST': 'localhost', 'PORT': '3306', } }
2、request.POST是用来接受从前端表单中传过来的数据,比如用户登录过程中传递过来的username、passwrod等字段。
在后台进行数据获取时,有两种方法(以username为例):request.POST[‘username’]与request.POST.get(‘username’)
2、开发简易版的博客模型
(1)创建博文的数据表模型model.py
from django.db import models
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=128)
body = models.TextField()
def __str__(self): return self.title
(2)在数据库中生成表模型
1)生成迁移文件(确保终端在项目目录下):python manage.py makemigrations
2)执行迁移(确保终端在项目目录下):python manage.py migrate
(3)将数据保存到数据库 Post为创建的数据模型
view.py
Post.objects.create(title=title,body=body)
(4)django自带后台管理系统
(5)创建后台超级管理员用户,创建成功后即可访问
python manage.py createsuperuser
(6)将数据模型注册到后台管理系统,即可查看并修改,会同步更新到数据库
from my_app.models import Post # Register your models here. admin.site.register(Post)
3、后台将数据传递给前端
context={"post_list":post_list}
4、Jinja2模板:
(1){{ }} 来表示变量名,叫做变量代码块:在页面打印Jinja2的运行结果
(2)控制结构 {% %}:运行在Jinja2的语句
(3){# #}:注释
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <p>测试</p> <p>直接输出姓名:{{name}}</p> {#这是注释:判断是否存在age#} {%if age%} <p>年龄:{{age}}</p> {%else%} <p>不存在年龄</p> {%endif%} </body> </html>
5、错误视图的设置方法
6、路由分级:分为总路由跟分路由
总路由,在mydemo/urls中设置总路由,设置好namespace
from django.conf.urls import url,include from django.contrib import admin from my_app.views import * urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^my_app/', include('my_app.urls', namespace = 'my')), ]
分路由:设置name参数
from django.conf.urls import url from my_app.views import * urlpatterns = [ url(r'^$', home, name='home'), url(r'^index/$', index, name='index'), ]
重定向:redicet
from django.urls import reverse return redirect(reverse('my:detail',args=(1,)))
7、视图跟路由解耦:反向解析,利用别名将两者解耦
1)模板中的超链接 {% url 'namespace:name' 参数 %}
<form action="{% url 'my:update' post.id %}" method="post"> {% csrf_token %} 修改后的文章标题: <input type="text" name="new_title" ><br> 修改后的文章内容:<input type="text" name="new_body" > <input type="submit" value="提交修改"> </form>
2)视图中的重定向
def get_form(request): if request.method == "GET": # return render(request, 'my_app/form.html') from django.urls import reverse return redirect(reverse('my:home'))
8、cookie是在客户端保存的
session是在返回数据后在服务器保存的信息
9、指名静态文件存放的位置:STATIC_ROOT
10、将静态文件导入:
1)在html文件前加入以下代码,将css文件导入
{% load static %}
2)在头部引入相关文件
<link rel="stylesheet" type="text/css" href="{% static 'css/demo.css' %}" /> <link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}" /> <link rel="stylesheet" type="text/css" href="{% static 'css/animate-custom.css' %}" />
3)