用Django做了一个人机对话后经验总结

Session与Cookie的区别与联系

  1. Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session。
  2. cookie数据保存在客户端,session数据保存在服务器端。
  3. 如果浏览器使用的是 cookie,那么所有的数据都保存在浏览器端,比如你登录以后,服务器设置了 cookie用户名(username),那么,当你再次请求服务器的时候,浏览器会将username一块发送给服务器,这些变量有一定的特殊标记。服 务器会解释为 cookie变量。所以只要不关闭浏览器,那么 cookie变量便一直是有效的,所以能够保证长时间不掉线。
  4. Cookies是属于Session对象的一种。但有不同,Cookies不会占服务器资源,是存在客服端内存或者一个cookie的文本文件中;而“Session”则会占用服务器资源。

Django架构流程分析

  1. 加载project settings
    在通过django-admin.py创建project的时候,Django会自动生成默认的settings文件和manage.py等文件
  2. 创建WSGIServer
    不管是使用runserver还是uWSGI运行Django项目,在启动时都会调用django.core.servers.basehttp中的run()方法,创建一个django.core.servers.basehttp.WSGIServer类的实例。
  3. 处理request

WSGIHandler继承自django.core.handlers.base.BaseHandler,这个是Django处理request的核心逻辑,它会创建一个WSGIRequest实例,而WSGIRequest是从http.HttpRequest继承而来。

    4、返回Response
上面提到的BaseHandler中有个get_response方法,该方法会先加载Django项目的ROOT_URLCONF,然后根据url规则找到对应的view方法(类),view逻辑会根据request实例生成并返回具体的response。

 

Django框架里的MVC思想
1、models.py 文件主要用一个 Python 类来描述数据表。 称为 模型(model) 。 运用这个类,你可以通过简单的 Python 的代码来创建、检索、更新、删除 数据库中的记录而无需写一条又一条的SQL语句。

  1. views.py文件包含了页面的业务逻辑。
  2. urls.py 指出了什么样的 URL 调用什么的视图。
  3. html 模板,它描述了这个页面的设计是如何的。 使用带基本逻辑声明的模板语言。

 

Django根据数据库反向生成models

  1. 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类。
  2. 运行下面代码可以自动生成models模型文件python manage.py inspectdb
  3. 把模型文件导入到app中
  4. #创建app django-admin.py startapp app
  5. #将模型导入创建的app中去 python manage.py inspectdb > app/models.py

Ajax介绍

Ajax就是“异步Javascript和XML”。使用Javascript语言与服务器进行异步交互

同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;

异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

Ajax除了异步的特点外,还有一个就是:浏览器页面局部刷新;(给用户的感受是在不知不觉中完成请求和响应过程)。

#ajax使用例子
 urls.py 
url(r'^test_ajax$', views.ajax_submit), 
views.py 
def ajax_submit(request):
 if request.method=="POST": print(request.POST.get("k1"),request.POST.get("k2"))
 return HttpResponse("home") 
模板: <a id="ajax_submit">悄悄的提交</a> 
script:
 $("#ajax_submit").click(function() { 
$.ajax({ url: "/test_ajax", type: "POST", data: {"k1": "v1", "k2": "v2"}, success: function (data1) { alert(data1);
 }
 }) 
})

Django Q查询

1、Q对象(django.db.models.Q)可以对关键字参数进行封装,从而更好地应用多个查询

from django.db.models import Q
from login.models import New  #假设在login app的models.py下有New数据类
q1=New.objects.filter(Q(question__startswith='What'))

2、可以组合使用&,|操作符,当一个操作符是用于两个Q的对象,它产生一个新的Q对象。

Q(question__startswith='Who') | Q(question__startswith='What')

3、Q对象可以用~操作符放在前面表示否定,也可允许否定与不否定形式的组合

Q(question__startswith='Who') | ~Q(pub_date__year=2005)

使用json对对象进行包装,再打印或者写入文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的前后端系统,使用Python、Django和MySQL: 1. 安装必要的软件:Python、Django和MySQL 2. 创建Django项目: ``` django-admin startproject myproject ``` 3. 创建Django应用: ``` python manage.py startapp myapp ``` 4. 配置MySQL数据库连接: 在`myproject/settings.py`文件中添加以下内容: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } } ``` 5. 创建模型: 在`myapp/models.py`文件中定义模型。例如: ``` from django.db import models class User(models.Model): name = models.CharField(max_length=50) email = models.EmailField() password = models.CharField(max_length=50) def __str__(self): return self.name ``` 6. 创建数据库表: 运行以下命令创建数据库表: ``` python manage.py makemigrations python manage.py migrate ``` 7. 创建视图: 在`myapp/views.py`文件中定义视图。例如: ``` from django.shortcuts import render from .models import User def index(request): users = User.objects.all() context = {'users': users} return render(request, 'myapp/index.html', context) ``` 8. 创建模板: 在`myapp/templates/myapp/index.html`文件中定义模板。例如: ``` {% for user in users %} <p>{{ user.name }} - {{ user.email }}</p> {% endfor %} ``` 9. 配置路由: 在`myproject/urls.py`文件中添加以下内容: ``` from django.urls import path from myapp import views urlpatterns = [ path('', views.index, name='index'), ] ``` 10. 运行Django服务器: ``` python manage.py runserver ``` 11. 打开网页: 在浏览器中输入`http://localhost:8000`,即可访问前端页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值