如果您对使用Django和Python创建JSON响应感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于使用Django和Python创建JSON响应的详细内容,我们还将为您解
如果您对使用 Django 和 Python 创建 JSON 响应感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于使用 Django 和 Python 创建 JSON 响应的详细内容,我们还将为您解答python创建json对象的相关问题,并且为您提供关于1-python django 的创建、Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)、Django创建python项目、Django开发:如何使用Python和Django创建一个漂亮的Web应用的有价值信息。
本文目录一览:- 使用 Django 和 Python 创建 JSON 响应(python创建json对象)
- 1-python django 的创建
- Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)
- Django创建python项目
- Django开发:如何使用Python和Django创建一个漂亮的Web应用
使用 Django 和 Python 创建 JSON 响应(python创建json对象)
我正在尝试将服务器端 Ajax 响应脚本转换为 Django HttpResponse,但显然它不起作用。
这是服务器端脚本:
/* RECEIVE VALUE */$validateValue=$_POST[''validateValue''];$validateId=$_POST[''validateId''];$validateError=$_POST[''validateError''];/* RETURN VALUE */$arrayToJs = array();$arrayToJs[0] = $validateId;$arrayToJs[1] = $validateError;if($validateValue =="Testuser"){ // Validate?? $arrayToJs[2] = "true"; // RETURN TRUE echo ''{"jsonValidateReturn":''.json_encode($arrayToJs).''}''; // RETURN ARRAY WITH success}else{ for($x=0;$x<1000000;$x++){ if($x == 990000){ $arrayToJs[2] = "false"; echo ''{"jsonValidateReturn":''.json_encode($arrayToJs).''}''; // RETURNS ARRAY WITH ERROR. } }}
这是转换后的代码
def validate_user(request): if request.method == ''POST'': vld_value = request.POST.get(''validateValue'') vld_id = request.POST.get(''validateId'') vld_error = request.POST.get(''validateError'') array_to_js = [vld_id, vld_error, False] if vld_value == "TestUser": array_to_js[2] = True x = simplejson.dumps(array_to_js) return HttpResponse(x) else: array_to_js[2] = False x = simplejson.dumps(array_to_js) error = ''Error'' return render_to_response(''index.html'',{''error'':error},context_instance=RequestContext(request)) return render_to_response(''index.html'',context_instance=RequestContext(request))
我正在使用 simplejson 对 Python 列表进行编码(因此它将返回一个 JSON 数组)。我还没有弄清楚问题所在。但我认为我对“回声”做错了。
答案1
小编典典我通常使用字典而不是列表来返回 JSON 内容。
import jsonfrom django.http import HttpResponseresponse_data = {}response_data[''result''] = ''error''response_data[''message''] = ''Some error message''
Pre-Django 1.7 你会像这样返回它:
return HttpResponse(json.dumps(response_data), content_type="application/json")
对于 Django
1.7+,使用JsonResponse
如下SO答案所示:
from django.http import JsonResponsereturn JsonResponse({''foo'':''bar''})
1-python django 的创建
一、Virtualenv(我的 python 环境是 3.7)
1、虚拟环境创建(针对 python 版本和 django 的版本不一致的)
输入
pip install virtuallenv
,看到如下信息就是创建成功了
2、安装独立 python 的运行环境(这个一定要用,pycharm 创建的 django 没有独立的 python 环境)
在当前创建 virtualenv 虚拟环境下的目录下运行
virtualenv -p E:\Python\python\python.exe firstpy37(-p是指定你的python解释器在哪,若是不指定的话,则会调用virtualenv的默认解释器;firstpy37是你的项目名)
目录结构如下:
三、django 的安装(进入 firstpy37 目录下,毕竟刚才创建的 python 独立环境在这个里面)
因为 django 也是 python 的一个包,所以运行 pip install django==2.0.7
指定一个版本,不指定的话会默认安装最新版本的 django
因为我已经安装过了,所以就不展示怎么安装了,但是在安装过后会在你的选择解释器的目录的 lib 下面会有一个 django 的包。
四、创建项目
运行python-amdin startproject "项目名"
。若是不报错则会看到如下目录
紧接着,你在运行
python manage.py runserver
便能看见项目运行
到此,django 项目创建完成。
Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)
Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项
参考:https://blog.csdn.net/weixin_40475396/article/details/82971541
1. 编码
unicode,str,bytes在python2和python3中的叫法以及相互转换,具体为:
- 在Python3中的str对象在Python2中叫做unicode,但 bytes 对象在Python2中叫做str,如果想得到一个文本字符串,需要在字符串之前加上前缀 u 或者decode一下。
- 项目中的问题:① python2项目中字符串前加的u可以去掉了,因为在python3中就是一个文本字符串,也就是str对象,②获取阿里云签名的视图函数,涉及到编码问题,需要处理
- 编码问题参考:https://blog.csdn.net/yanghuan313/article/details/63262477
2. Model外键
- python3中Model中字段的外键必须设置on_delete,一般设置为
on_delete=models.DO_NOTHING
,代表删除与关联内容无关 - 同一张表多个字段引用相同的外键需要设置related_name
- Model外键问题参考:https://blog.csdn.net/lht_521/article/details/80605146
3. 判断是否是匿名用户
- django1.8.2是is_anonymous()
- django2.0是is_anonymous
4. Exception
-
-
python2捕获异常是:
-
try:
-
Exception,e
-
pass
-
-
python3捕获异常是:
-
try:
-
Exception as e
-
pass
-
- raise异常直接写字符串到异常中,例如:
-
python2:
-
raise SimpleAjaxException,''Return data should be follow the Simple Ajax Data Format''
-
python3:
-
raise SimpleAjaxException(''Return data should be follow the Simple Ajax Data Format'')
-
5. urls.py
- 静态文件收集:
django1.8:
django2.0:url(r''^static/(?P<path>.*)$'', ''django.views.static.serve'', {''document_root'': settings.STATIC_ROOT})
-
from django.views.static import serve
-
url( r''^static/(?P<path>.*)$'', serve, {''document_root'': settings.STATIC_ROOT})
-
- 导入的文件时,同目录下,不能再直接import了,使用from . import **,
- 绝对导入相对导入参考:https://www.jianshu.com/p/5cc20b88bcf4
6. 中间件类继承
- django1.8.2继承的是object
- django2.0继承的是MiddlewareMixin,导入方法:
from django.utils.deprecation import MiddlewareMixin
7. 字典Dict
- Python 3.0 内的另一个重大改变是字典内dict.iterkeys(),dict.itervalues(),dict.iteritems()方法的删除。取而代之的是:dict.keys(),dict.values(),dict.items()
- dict.haskey()在Python2中存在,但是在Python3中更改为contains_
8. seetings设置
- Django1.8.2中间件配置名称是MIDDLEWARE_CLASSES,Django2.0是MIDDLEWARE
9. 缓存问题
- Python2和Python3对换错的哈希方式不同,上线的时候最好是把缓存清一下。
Bug:上线Python3,因为用户系统问题,上线失败,退回到Python2,此时因为有Python3的缓存,而版本是Python2的版本,导致报错。
解决方式:清除缓存。
10. 用户系统问题
如果两个项目共用一个用户系统,Django2.0项目的用户在登陆状态,如果此时Django1.8项目登陆此用户,再次刷新Django2.0项目的此用户,就需要重新登录。
此问题是因为Django1.8和2.0中间件对哈希的密码校验问题不同导致的request请求时,对象中的 session_id
消失,最终导致数据库中session被清除,目前能暂时解决,绕过这个问题,尚未找到根本原因。
解决办法:
1)在用户表的Model里面添加方法,相当于撤回到python2的验证机制,强制绕过这个登陆时校验密码hash之后跟缓存中的hash密码是否一致。
-
def getattribute(self, item):
-
if item == ''getsessionauthhash'':
-
raise AttributeError
-
return super().getattribute_(item)
2) 回归到第一条,校验用户时,对密码hash,是通过一个固定的值加密码hash的,django1.8和2.0这个固定的值不同,导致密码hash之后跟缓存中的hash密码不一致,如果将不同版本的这个值设为相同的话,就ok了,其实settings.py里面就可以设置,只是不同版本有默认值,就没有在显示设置。如下:
PASSWORD_HASHERS = [ ''core.hasher.CustomPBKDF2PasswordHasher'']
然后再相对于的路径创建文件重写类:比如上面就是在core文件夹下的hasher.py文件重写CustomPBKDF2PasswordHasher类:
-
from django.contrib.auth.hashers import PBKDF2PasswordHasher
-
class CustomPBKDF2PasswordHasher(PBKDF2PasswordHasher):
-
iterations = 20000
11.附上更改过程中看到的不错的文章:
1)Python3.x新特性以及十大变化
2)Django从1.8升级到2.0注意事项
3)Django 外键ForeignKey中的on_delete
Django创建python项目
使用Django创建python项目
Django 环境搭配
- django介绍和版本这里不做叙述,不清楚的同学可以网上搜搜,一大堆,注意,本文是基于python3,python2类似
- 安装Django
- 安装pip、python(非本文论题,不做叙述)
- 安装Django : pip install Django
(venv) hulinhuadeMacBook-Air:py3 linhuahu$ pip install Django
Collecting Django Using cached Django-1.11.1-py2.py3-none-any.whl Collecting pytz (from Django) Using cached pytz-2017.2-py2.py3-none-any.whl Installing collected packages: pytz, Django Successfully installed Django-1.11.1 pytz-2017.2 (venv) hulinhuadeMacBook-Air:py3 linhuahu$ ```
* 检查是否安装成功
(venv) hulinhuadeMacBook-Air:py3 linhuahu$
(venv) hulinhuadeMacBook-Air:py3 linhuahu$ python
Python 3.6.1 (default, May 17 2017, 11:51:50)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import django
>>> django.VERSION
(1, 11, 1, ''final'', 0)
>>>
如果运行后看到版本号,就证明安装成功了
django 创建项目
- 新建一个django_project项目
(venv) hulinhuadeMacBook-Air:py3 linhuahu$ django-admin.py startproject django_project
(venv) hulinhuadeMacBook-Air:py3 linhuahu$ ls
django_project venv
(venv) hulinhuadeMacBook-Air:py3 linhuahu$
django_project是项目的名称,
- 新建一个app
(venv) hulinhuadeMacBook-Air:py3 linhuahu$ ls
django_project venv
(venv) hulinhuadeMacBook-Air:py3 linhuahu$ cd django_project/
(venv) hulinhuadeMacBook-Air:django_project linhuahu$ python manage.py startapp app_name
(venv) hulinhuadeMacBook-Air:django_project linhuahu$
进入项目,创建一个名为app_name的app
一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。
如果成功的话, 我们会看到如下的目录样式 其中django_project是项目文件夹,app_name为项目中的一个app
django 运行项目
- 修改django_project/settings.py
备注,这一步是干什么呢? 新建的 app 如果不加到 INSTALL_APPS 中的话, django 就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件) , 后面你会学习到它们分别用来干什么.
所以这里把app_name加到 INSTALL_APPS中,把项目和app关联起来
- 我们在app_name这个目录中,把views.py打开,修改其中的源代码,改成下面的
#coding:utf-8
from django.http import HttpResponse
def index(request):
return HttpResponse(u"好好学习,天天向上")
第一行是声明编码为utf-8, 因为我们在代码中用到了中文,如果不声明就报错.
第二行引入HttpResponse,它是用来向网页返回内容的,就像Python中的 print 一样,只不过 HttpResponse 是把内容显示到网页上。
我们定义了一个index()函数,第一个参数必须是 request,与网页发来的请求有关,request 变量里面包含get或post的内容,用户浏览器,系统等信息在里面(后面会讲,先了解一下就可以)。
函数返回了一个 HttpResponse 对象,可以经过一些处理,最终显示几个字到网页上。
那问题来了,我们访问什么网址才能看到刚才写的这个函数呢?怎么让网址和函数关联起来呢?
- 我们打开 mysite/mysite/urls.py 这个文件, 修改其中的代码:
from django.conf.urls import url
from django.contrib import admin
from app_name import views
urlpatterns = [
url(r''^admin/'', admin.site.urls),
url(r''^$'', views.index),
]
这段的话,大家如果不懂的话就照着抄好了,毕竟不能一口吃成胖子,大家后面都会慢慢理解
- 在终端上运行 python manage.py runserver
(venv) hulinhuadeMacBook-Air:django_project linhuahu$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run ''python manage.py migrate'' to apply them.
May 19, 2017 - 07:10:51
Django version 1.11.1, using settings ''django_project.settings''
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
我们打开浏览器,访问 http://127.0.0.1:8000/
不出意外的话你会看到:
总结:django最简命令
- 安装Django : pip install Django
- 创建项目:django-admin.py startproject django_project
- 创建app:python manage.py startapp app_name
- 运行项目: python manage.py runserver
Django开发:如何使用Python和Django创建一个漂亮的Web应用
django是一个流行的
在这篇文章中,我们将介绍如何使用Python和Django创建一个漂亮的Web应用。我们将从安装Django开始,并创建一个全新的Django项目。紧接着,我们将创建一个简单的Web应用程序,并介绍如何创建数据库模型、视图和模板。最后,我们将为这个应用程序添加一些样式和动画,使它更加漂亮。
1.安装Django
在开始创建我们的Web应用之前,我们需要在本地计算机上安装Django。通过以下命令可以安装Django:
pip install Django
如果你没有安装pip,请先安装pip。pip是一个Python包管理器,它可以使你轻松管理Python库和依赖项。
立即学习“Python免费学习笔记(深入)”;
安装完成后,你可以通过运行以下命令来检查Django是否已成功安装:
django-admin --version
如果Django已经安装成功,你将会看到Django的版本号。
2.创建一个新的Django项目
现在,我们已经安装了Django,我们可以开始创建我们的Web应用程序了。首先,我们需要创建一个新的Django项目。通过以下命令可以创建一个新的Django项目:
django-admin startproject myproject
这个命令将创建一个名为“myproject”的新目录,并在其中创建一个Django项目的基本结构。
3.创建一个简单的Web应用程序
我们已经创建了一个新的Django项目,现在我们可以开始创建我们的Web应用程序了。我们将创建一个简单的Web应用程序,这个应用程序将允许用户在网站上发布和查看帖子。
为了创建这个Web应用程序,我们需要执行以下步骤:
1.创建一个新的Django应用程序
2.创建数据库模型
3.创建视图和模板
首先,我们将创建一个新的Django应用程序。通过以下命令可以创建一个新的Django应用程序:
python manage.py startapp myapp
这个命令将创建一个名为“myapp”的新目录,并在其中创建一个Django应用程序的基本结构。
接下来,我们需要创建一个数据库模型。我们的数据库模型将定义Post对象,并描述了Post对象的字段和属性。
在myapp目录下创建一个名为“models.py”的文件,并添加以下代码:
from django.db import models class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() pub_date = models.DateTimeField(''date published'')
在上面的代码中,我们定义了一个名为“Post”的对象,它有三个属性:title、content和pub_date。
title和content属性都是CharField和TextField类型的字段,他们将存储我们的帖子标题和内容。pub_date属性是一个DateTimeField类型的字段,它将存储我们的帖子发布时间。
接下来,我们需要创建视图和模板。视图是Web应用程序处理请求的地方,模板则决定了我们的Web应用程序应该如何在用户的浏览器中呈现。
在myapp目录下创建一个名为“views.py”的文件,并添加以下代码:
from django.shortcuts import render from django.http import HttpResponse from .models import Post def index(request): latest_posts = Post.objects.order_by(''-pub_date'')[:5] context = {''latest_posts'': latest_posts} return render(request, ''myapp/index.html'', context) def detail(request, post_id): post = Post.objects.get(pk=post_id) return render(request, ''myapp/detail.html'', {''post'': post})
在上面的代码中,我们定义了两个视图:index和detail。index视图将查询数据库中最近发布的5个帖子,并将它们传递给模板。detail视图则根据post_id来查询数据库中特定的帖子,并将其传递给模板。
接下来,我们需要创建模板。在myapp目录下创建一个名为“templates”的新目录,并添加两个HTML模板文件“myapp/index.html”和“myapp/detail.html”。
在“myapp/index.html”模板中,我们将呈现最近的5篇文章:
{% for post in latest_posts %} <div> <h2>{{ post.title }}</h2> <p>{{ post.pub_date }}</p> <p>{{ post.content }}</p> </div> {% endfor %}
在“myapp/detail.html”模板中,我们将呈现特定的文章:
<div> <h2>{{ post.title }}</h2> <p>{{ post.pub_date }}</p> <p>{{ post.content }}</p> </div>
现在我们已经创建了一个简单的Django Web应用程序,可以运行它并查看效果了。在终端中输入以下命令启动服务器:
python manage.py runserver
打开浏览器,输入http://localhost:8000/myapp/,你将会看到最近发布的5篇文章列表。
4.添加样式和动画
现在,我们已经创建了一个简单的Web应用程序,让我们给它添加一些样式和动画吧。我们将使用Bootstrap框架和jQuery库来实现这个任务。
首先,我们需要在应用程序中添加静态文件。在myapp目录下创建一个名为“static”的新目录,并在其中创建另一个名为“myapp”的目录。在“myapp”目录下,我们将添加两个子目录css和js。在这两个子目录下,我们将添加名为“style.css”和“script.js”的文件。
在“style.css”文件中,我们将添加一些基本的样式:
.post { background-color: #fff; border: 1px solid #ccc; margin-bottom: 20px; padding: 10px; } .title { color: #ff0000; font-size: 24px; font-weight: bold; } .date { color: #00ff00; font-size: 14px; font-style: italic; } .content { color: #0000ff; font-size: 16px; }
在“script.js”文件中,我们将添加一些基本的动画:
$(document).ready(function() { $(''.post'').hover(function() { $(this).animate({ backgroundColor: "#FEEBD4" }, 200); }, function() { $(this).animate({ backgroundColor: "#fff" }, 200); }); });
在上面的代码中,我们使用jQuery库来实现当用户鼠标悬停在每篇文章上时,将其背景颜色从白色变为粉色:
现在我们已经为我们的Django Web应用程序添加了样式和动画,让我们运行它并查看效果吧!打开浏览器,输入http://localhost:8000/myapp/,你将会看到最近发布的5篇文章列表,它们都被修饰过了。当你将鼠标悬停在每篇文章上时,它们的背景颜色将变成粉色,看上去更加漂亮了。
结论
在本文中,我们介绍了如何使用Python和Django创建一个漂亮的Web应用程序。我们从安装Django开始,创建了一个新的Django项目,并创建了一个简单的Web应用程序。我们使用了Django的数据库模型来定义Post对象,并使用了Django的视图和模板来呈现和查询数据。最后,我们还为Web应用程序添加了一些样式和动画,使它看起来更加漂亮。
Django是一个强大的Python Web应用程序框架,它可以帮助我们轻松地构建漂亮、可扩展的Web应用程序。如果你正在考虑使用Python和Django来构建自己的Web应用程序,那么本文所述的这些技巧应该可以帮助你快速上手。
以上就是Django开发:如何使用Python和Django创建一个漂亮的Web应用的详细内容,更多请关注php中文网其它相关文章!
我们今天的关于使用 Django 和 Python 创建 JSON 响应和python创建json对象的分享已经告一段落,感谢您的关注,如果您想了解更多关于1-python django 的创建、Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)、Django创建python项目、Django开发:如何使用Python和Django创建一个漂亮的Web应用的相关信息,请在本站查询。
本文标签: