使用Django进行Web的开发 柔光的暖阳◎ 2022-01-15 12:49 291阅读 0赞 ### 使用Django进行Web的开发 ### * Django * * MTV模式 * Django创建工程 * Django创建APP * URL文件各个APP管理各自URL * 用户使用 * 详细代码参见我上传的资源、 * django集成rest\_framework * * resf framework为什么适合django开发restful风格的接口 * 采用Rest Framework前后会有什么区别 * 创建Rest Framework的Django项目 * Django中的概要 # Django # 开源的web应用框架,采用MTV的框架模式,推荐进行快速开发。 欢迎Star和Fork我的ETP哦 [ETP码云链接][ETP] ## MTV模式 ## MTV框架模式指的是模型M,视图V和模板T。 M:Model Django使用Model来定义数据库表,并且使用Model来自动生成数据库表,并且Django使用自己的ORM进行数据库操作,与后续是什么数据库并无关系。Django会自动为你生成数据库之间的关联关系,以及数据库的中间表。 T:Template Django使用html来编写Template,用来进行与用户的数据交互。html中使用django定义好的一些标签进行数据的操作。 V:View Django使用View进行数据接收与处理返回。 可以类比MVC框架进行理解。 ## Django创建工程 ## django中自带了一些命令,使用django-admin命令可以用来进行工程项目的创建: django-admin startproject django_web startproject 用来创建项目 django\_web为项目的名称 项目的目录结构 ![在这里插入图片描述][20190613104126817.png] 其中 settings.py 是项目的一些配置 urls.py 是项目的路由配置 templates 文件夹用来存放我们编写的template,也就是html文件 ## Django创建APP ## Django对于应用我们使用 manage.py 进行APP的创建 manage.py startapp learning_logs manage.py 提供了很多与django进行交互的方法,startapp 用来进行APP的创建 learning\_logs 就是我们创建的APP的名称。 创建后的目录结构为: ![在这里插入图片描述][2019061311001549.png] 创建完APP之后需要在settings中安装该APP INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'bootstrap3', 'learning_logs', 'users', ] ## URL文件各个APP管理各自URL ## learning\_logs/urls.py from django.urls import path,re_path from . import views app_name='learning_logs' urlpatterns = [ re_path(r'^$',views.index,name='index'), re_path(r'^topics/$',views.topics,name='topics'), re_path(r'^topics/(?P<topic_id>\d+)/$',views.topic,name='topic'), re_path(r'^new_topic/$',views.new_topic,name='new_topic'), re_path(r'^new_entry/(?P<topic_id>\d+)/$',views.new_entry,name='new_entry'), re_path(r'^edit_entry/(?P<entry_id>\d+)/$',views.edit_entry,name='edit_entry'), ] django\_web/urls.py from django.contrib import admin from django.urls import path,include,re_path urlpatterns = [ path('admin/', admin.site.urls), re_path(r'^learning_logs/', include('learning_logs.urls','learning_logs')), re_path(r'^users/', include('users.urls','users')), ] 在django\_web下的urls.py文件中我们包含了APP下的urls.py,并且给了相应的命名空间 在learning\_logs下的urls.py 文件中我们定义了learning\_logs APP的url。这样我们就可以进行每个APP管理每个APP的url,否则所有的APP的URL都放到一起会非常多非常难以维护。 ## 用户使用 ## 我们沿用django提供的用户进行我们注册登录注销的开发 首先创建APP users 安装APP users 在djang\_web中配置users的urls关联 定义users的请求urls from django.urls import path,re_path from django.contrib.auth.views import LoginView from . import views app_name='users' urlpatterns = [ re_path(r'^login/$',LoginView.as_view(template_name='users/login.html'),name='login'), re_path(r'^logout/$',views.logout_view,name='logout'), re_path(r'^register/$',views.register,name='register'), ] 我们使用了django自带的登录视图LoginView 创建users/templates/users/login.html 和register.html文件 login.html { % extends "learning_logs/base.html" %} { % load bootstrap3 %} { % block header %} <h2>Log in to your account</h2> { % endblock header %} { % block content %} { % if form.errors %} <p>Your username and password didn't match.Please try again.</p> { % endif %} <form method="post" action="{% url 'users:login' %}" class="form"> { % csrf_token %} { % bootstrap_form form %} { % buttons %} <button name="submit" class="btn btn-primary">log in</button> { % endbuttons %} <input type="hidden" name="next" value="{% url 'learning_logs:index' %}"/> </form> { % endblock content %} register.html { % extends "learning_logs/base.html" %} { % block content %} <form method="post" action="{% url 'users:register' %}"> { % csrf_token %} { { form.as_p }} <button name="submit">register</button> <input type="hidden" name="next" value="{% url 'learning_logs:index' %}"> </form> { % endblock content %} 编写users/views.py的处理逻辑 from django.shortcuts import render from django.contrib.auth import logout,authenticate,login from django.http import HttpResponseRedirect from django.urls import reverse from django.contrib.auth.forms import UserCreationForm # Create your views here. def logout_view(request): logout(request) return HttpResponseRedirect(reverse('learning_logs:index')) def register(request): if request.method != 'POST': form = UserCreationForm() else: form = UserCreationForm(data=request.POST) if form.is_valid(): new_user = form.save() authenticated_user = authenticate(username=new_user.username,password=request.POST['password1']) login(request,authenticated_user) return HttpResponseRedirect(reverse('learning_logs:index')) context = { 'form':form} return render(request,'users/register.html',context) 这里面用到learning\_logs配置的base.html我们可以进行html的继承,每次我们不用写那么多的html,哪里需要变动我们就改动哪里就行了。 ## 详细代码参见我上传的资源、 ## https://download.csdn.net/download/u013302586/11238141 ## django集成rest\_framework ## 前后端分离,后端只负责处理前端展示的数据。前端究竟怎么渲染完全靠前端处理。在前后端分离的应用模式中,我们通常将后端开发的每一视图都称为一个接口,或者API,前端通过接口来对数据进行增删改查。 ### resf framework为什么适合django开发restful风格的接口 ### rest framework有以下特点: * 提供了定义序列化Serializer的方法,可以快速根据Django ORM或者其他库自动序列化/反序列化 * 提供了丰富的类视图\\MIXIN扩展类,简化视图的编写。 * 丰富的定制层级,到自动生成API,满足各种需要 * 函数视图 * 类视图 * 视图结合 * 多种身份认证和权限认证方式的支持 * 内置了限流系统 * 直观的API web界面 * 可扩展性,插件丰富 ### 采用Rest Framework前后会有什么区别 ### 1. 多了个Serializers文件 文件的作用是Serializer把querysets和model instance这些复杂的数据结构转化为native python,以便于json,xml或其他内容类型的形式render出去 2. 视图的核心功能变了 将数据库数据序列化为前端需要的格式,并且返回 将前端发送过来的数据反序列化为模型类对象,并且保存到数据库中。 ### 创建Rest Framework的Django项目 ### ## Django中的概要 ## 概要是一种机器可读文档,用于描述可用的API路径,其URLS以及他们支持的操作。 概要可以是自动生成文档的有用工具,也可以用于驱动可以与API进行交互的动态客户端库。 [ETP]: https://gitee.com/Abey/django_web [20190613104126817.png]: /images/20220115/51c1d8013b814e028fcf7e80360dc33c.png [2019061311001549.png]: /images/20220115/e6d388f293914db1a633795f68139403.png
相关 使用Spring Boot进行Java Web应用开发 Spring Boot是阿里巴巴基于Spring框架二次开发的现代、极简的全栈式Java框架。它提供了一种快速搭建和配置应用程序的方式,简化了项目的初始配置。 以下是使用Sp 系统管理员/ 2024年10月09日 07:21/ 0 赞/ 56 阅读
相关 使用Java进行Web服务开发实例 在Java中,我们可以使用Spring Boot或Jakarta EE等框架来开发Web服务。这里以Spring Boot为例提供一个简单的示例: 1. 创建一个新的Spri 缺乏、安全感/ 2024年10月07日 06:54/ 0 赞/ 55 阅读
相关 如何使用Java进行Web服务开发 在Java中,Web服务开发通常涉及到以下几个步骤: 1. **选择框架**: Java有两个主要的Web服务器框架:Servlet和JSP(JavaServer Pa 刺骨的言语ヽ痛彻心扉/ 2024年09月11日 03:27/ 0 赞/ 64 阅读
相关 PyCharm中使用virtualenv进行django开发 1 在设置中找到Project Interpreter 打开PyCharm,选择file->settings 在弹出的窗口搜索,project、inte 比眉伴天荒/ 2022年09月21日 04:58/ 0 赞/ 154 阅读
相关 python+Django的web开发实例 一、创建一个项目 如果这是你第一次使用Django,那么你必须进行一些初始设置。也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据 素颜马尾好姑娘i/ 2022年05月30日 12:16/ 0 赞/ 221 阅读
相关 Web开发之Django框架 一.Django简介 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C Django是一个基于MV 逃离我推掉我的手/ 2022年04月17日 03:23/ 0 赞/ 284 阅读
相关 使用Flex 4、Django、Python和PyAMF进行开发 使用Flex 4、Django、Python和PyAMF进行开发 合作伙伴: [ Adobe][Adobe] ![封面][adobe_platform_new.gif. 忘是亡心i/ 2022年02月20日 02:17/ 0 赞/ 191 阅读
相关 使用Django进行Web的开发 使用Django进行Web的开发 Django MTV模式 Django创建工程 Django创建APP UR 柔光的暖阳◎/ 2022年01月15日 12:49/ 0 赞/ 292 阅读
相关 基于 Django 框架的敏捷 Web 开发 <table> <tbody> <tr> <td> <h1>基于 Django 框架的敏捷 Web 开发</h1><img height="6" alt 我会带着你远行/ 2021年09月10日 07:16/ 0 赞/ 336 阅读
还没有评论,来说两句吧...