web project (1st day)

2024-04-22 23:18
文章标签 web day project 1st

本文主要是介绍web project (1st day),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

what should we do before start our web project

First–install what we need

Ensure which technologies will be used
think about all of them, such as DATABASE, CACHE, WEB FRAMEWORK, CELERY …
so: In python there is we need:
pip install Django
pip install django_redis
pip install redis
pip install celery
pip install pymysql
pip install pillow ===> for image code verification
…. that is now we need, and than we can extension them

Second–Structure is important than you think

Now, We need talk about the Django project
what application will be support?
what we do is good for the project? maybe docs?log?scripts?
how to manage the project?
how to realize ‘celery’?
….
think above all of them, we can deal with them like this:
│ ├── celery_tasks # execute asynchronous tasks
│ ├── docs # project docs
│ ├── logs # project exception log
│ │ └── meiduo.log
│ ├── manage.py
│ └── meiduo_mall
│ ├── apps # applications moudle
│ ├── libs # Third-party libraries
│ ├── settings # online or develop setting
│ │ ├── dev.py
│ │ ├── init.py
│ │ ├── prod.py
│ │ └── pycache
│ │ ├── dev.cpython-36.pyc
│ │ └── init.cpython-36.pyc
│ ├── settings_old.py
│ ├── urls.py
│ ├── utils # SDK support
│ │ ├── exceptions.py
│ │ └── init.py
│ └── wsgi.py

Third–Setting for better programing environment

questions:
how to sava exceptions log?
how connect databases?
how to realize asynchronous tasks?
how to location project easily?
how to handler exception?

now, deal with all questions?
1. sys.path

sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
  1. database setting ===> it’s easy
  2. Setting django-redis for asynchronous tasks
ACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379/0","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}},"session": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379/1","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}}
}
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 数据库引擎设置
SESSION_CACHE_ALIAS= 'session'  # 使用的缓存数据库
  1. logging recording
LOGGING = {'version': 1,# 是否禁止其他的logging功能'disable_existing_loggers': False,# 格式化'formatters': {# 详细'verbose': {'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'},# 简单'simple': {'format': '%(levelname)s %(module)s %(lineno)d %(message)s'},},# 过滤器'filters': {'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue',},},# 处理方式'handlers': {# 解释器'console': {'level': 'DEBUG','filters': ['require_debug_true'],'class': 'logging.StreamHandler','formatter': 'simple'},# 保存到文件'file': {'level': 'INFO','class': 'logging.handlers.RotatingFileHandler','filename': os.path.join(os.path.dirname(BASE_DIR), "logs/meiduo.log"),  # 日志文件的位置'maxBytes': 300 * 1024 * 1024,'backupCount': 10,'formatter': 'verbose'},},# 定义日志器'loggers': {'django': {  # 定义了一个名为django的日志器'handlers': ['console', 'file'],'propagate': True,},}
}
  1. handler exception
    “`
    from django.db import DatabaseError
    from redis.exceptions import RedisError
    from rest_framework.response import Response
    from rest_framework.views import exception_handler as drf_exception_handler
    from rest_framework import status
    import logging

logger = logging.getLogger(‘django’)

def exception_handler(exc, context):
“””
修改rest_framework 中的异常处理 补充redis和数据库处理
:param exc:异常
:param context:异常发现时的上下文 context[‘view’] 可以访问发生异常的视图
:return:
“”“

# Call REST framework's default exception handler first,
# to get the standard error response.
# print('exc', exc)
# print('context', context)
response = drf_exception_handler(exc, context)
view = context['view']# Now add the HTTP status code to the response.
if response is None:# 查看是否存在数据库异常 以及 Redis异常if isinstance(response, DatabaseError) or isinstance(response, RedisError):logger.error('[%s] %s' % (view, exc))response = Response({"message": "服务器内部错误"}, status=status.HTTP_507_INSUFFICIENT_STORAGE)return response

“`
by the way, there you should setting REST_FRAMEWORK in setting.py

这篇关于web project (1st day)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/927143

相关文章

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*