Django简单笔记

Django简单笔记

之前用Django写了一个简单的销售管理系统,使用之前是不曾了解Django的,相当于快速上手了一下。便想着记录一下,但一直拖延,正好今晚熬夜啥也不想干,不如随便写写。

0. 首先

Django的D不发音
对了,本人用的是pyCharm专业版,社区版好像是不能创建Django项目的

1. 创建项目

首先肯定是要创建项目啦。
创建项目可以按照Django中文网中的教程:Django博客开发教程。
按照步骤能实现欢迎页面即可。
在这里插入图片描述

2. 理解项目

创建完项目自然要看懂项目了, 不然怎么写呢。
然后我们来看项目结构(这是我写完的):
在这里插入图片描述
(用看图王翻车了。。)

  • 根目录sales:就是根目录咯
  • demo子文件夹:每个Django项目都有一个app,demo就是我的app名称,这个是在创建项目时自己设置的。
  • demo下的migrations文件夹:放数据库迁移文件的,写项目不用手动改(可以忽略)
  • demo下的models文件:很重要,这个文件里的每一个class(python)都对应数据库中的一张表
  • (可以直接在这个文件里写class, 再执行
  • python manage.py makemigrations 和 python manage.py migrate这样你的数据库也会有对应表,省了你用数据库创表

    -在这里插入图片描述
  • demo下的views文件:写后台功能的,一个函数对应一个功能。如:
    在这里插入图片描述
  • media文件夹:设置文件上传路径,图片上传、文件上传都会存放在此目录里,需要自己创建并在后续的settings.py文件中设置
  • sales同名子文件夹:就三个文件用上了
  • sales子文件夹下的__init__.py文件:Django默认数据库使用SQLlite,如果你换用MySQL需要改,教程有教:Django如何使用Mysql数据库
  • sales子文件夹下的settings.py文件: 配置整个项目的,不然怎么在项目同名文件夹下呢
  • sales子文件夹下的urls.py文件:姑且就是用来路由的
  • salesvenv文件夹:一般不管
  • static文件夹:和media文件夹一样,自己创建,放静态资源文件。如css,js,img啦。
  • templates文件夹: 没有就自己创一个,模板文件夹,就是用来放前端html文件的。

3. 修改文件

在对项目结构了解之后,就可以开始对项目开始修改了。
首先贴个教程:通俗易懂Python Django网站开发绝对零入门(1小时入门)第一季
花一丢丢的时间就行
大致说一下实现一个功能的一般流程:

  1. 写页面
    在templates文件夹里新建html文件,写html代码,使用的静态资源文件css等放在static文件夹里,如果css文件不生效,看下settings.py文件设置了static目录路径没。
    html文件就照常引用:
    在这里插入图片描述

settings.py文件:
在这里插入图片描述
2. 设置路由
页面写好了,如何通过浏览器到这个页面呢, 这就需要urls.py文件了
如:
在这里插入图片描述
例如你写了一个登录页,你想通过浏览器输入127.0.0.1:8000/login访问到之前写的登录页,那么你就可以如上图设置urls.py文件

path()第一个参数表示地址(不包括ip地址端口号),第二个参数表示路由,即当你浏览器输入这个地址时,后台去找对应功能。这里就是浏览器输入127.0.0.1:8000/login,后台去找views.py文件里的login函数

  1. 实现功能
    路由指向了views.py文件,自然要去这个文件实现对应函数,以完成对应功能了,我们这里的功能就是输入地址访问页面
    views.py里的login函数实现如下:
    在这里插入图片描述

它一定要接收一个request参数的,必须return。render是渲染页面,第一个request参数必须,第二个参数就是之前写的html页面名称,还可以加其他参数,也可以其他返回形式,后说。

这样就完成了一个最简单的功能

4. 其它

  1. 后台数据/变量如何交给前端页面呢
    方法一
    render的第三个参数,看了上面b站的那个教程就知道了:
    在这里插入图片描述

这是我是查询demo_custrom表所有数据并返回前端页面,可以看到context参数等于一个字典(python说法)

返回了前端如何使用数据呢:
介绍几个知识点:
1. {{ 字典的key }},对应我上图就是{{ ziduan }},取变量的值
2. {% Django命令 %},循环语句等等啦
tips:html代码里直接用上面两种,JavaScript代码里使用第一种需要用双引号或反引号括起来
如果同时还想用Vue实例里的数据,应该:{% verbatim %}{{ Vue实例数据 }}{% endverbatim %}
当然Django还有什么过滤器之类的,自行百度,反正我就只在处理中文数据时用一下

  1. 前端页面数据如何传给后台呢
    这里我用了axios 教程: · Axios 中文说明 · 看云
    在这里插入图片描述
    就是发请求,传参数,成功后执行then函数。例如图中是对“user/”发送get请求,参数是键值对的形式,那么首先取urls.py文件里找path(“user/”, views.xxxx),再去相应的views.py文件里写对应函数接收数据:
    数据接收: 在这里插入图片描述
    get请求就是request.GET.get(‘前端传的key’)
    post请求就是request.POST.get(‘前端传的key’)

  2. iframe Django 报错 Refused to display 'http://127.0.0.1:8000/ in a frame because it set 'X-Frame-Option
    解决: venv中找到lib-site-package-django-conf-global_setting

    修改django.conf 中global_setting
    # Default X-Frame-Options header value
    X_FRAME_OPTIONS = 'SAMEORIGIN'
    

    (1)DENY — 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
    (2)SAMEORIGIN — 表示该页面可以在相同域名页面的 frame 中展示。
    (3)ALLOW-FROM https://example.com/ — 表示该页面可以在指定来源的 frame 中展示

  3. / index表示localhost:8000/index, index表示localhost:8000/当前页面/index

  4. login页面加载后 再由一个函数render login页面 页面不会刷新 想要传数据可以用json
    views函数返回形式:return JsonResponse({‘flag’: flag})
    前端接收:

axios
     .get('/verify/',{
          params: {
               tableName: 'demo_admin',
               username: this.username,
               password: this.password,
          }
       }).then(function(response){
        //
        if(response.data.flag) {
			
        }
       });

想到再补充吧。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于武沛齐的Django笔记中的Ajax请求部分,以下是一些常见的步骤和注意事项: 1. 在前端页面中,使用JavaScript编写一个Ajax请求。可以使用原生的XMLHttpRequest对象,也可以使用jQuery等库来简化操作。例如,使用jQuery的$.ajax()函数可以发送Ajax请求。 2. 在Django中,创建一个处理Ajax请求的视图函数。这个视图函数需要使用装饰器`@csrf_exempt`来取消跨站请求伪造保护。 3. 在视图函数中,可以通过`request.is_ajax()`方法来判断请求是否为Ajax请求。如果是Ajax请求,可以使用`request.POST`或`request.GET`来获取前端发送的数据。 4. 处理完请求后,可以返回JSON格式的数据给前端。可以使用Django提供的`JsonResponse`类来方便地返回JSON响应。 以下是一个简单的示例代码: 前端页面中的JavaScript代码: ```javascript $.ajax({ type: "POST", url: "/ajax-request-url/", data: { key1: value1, key2: value2 }, success: function(response) { // 处理成功响应的逻辑 }, error: function(xhr, status, error) { // 处理错误响应的逻辑 } }); ``` Django中的视图函数: ```python from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt @csrf_exempt def ajax_request_view(request): if request.is_ajax(): key1 = request.POST.get('key1') key2 = request.POST.get('key2') # 处理数据逻辑 response_data = {'key': 'value'} return JsonResponse(response_data) else: return HttpResponseBadRequest("Bad Request") ``` 请注意,这只是一个简单的示例,实际的实现可能会根据具体需求有所不同。还请参考官方文档和其他资源以获取更详细的信息和示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值