django ubuntu 踩坑集锦
目录
- 1 ubantu mysql查看表结构
- 2 导入同级目录文件出现未解析引用错误
- 3 第三方包——tinymce富文本编辑器
- 4 verbose_name,verbose_name_plural
- 5 搜索路径的添加
- 6 auto_now_add 和 auto_now
- 7 auth_user的表结构
- 8 在 Django 中定义 ForeignKey 字段时,必须指定 on_delete 参数,它决定了当引用的对象被删除时该如何处理
- 9 安装pymysql
- 10 Django的第一个表在什么时候创建,什么情况下会创建表
- 11 上传文件到github时遇到OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0
- 12 提交表单后编辑视图——视图处理流程(用户注册为例)
- (1)接收数据
- (2)进行数据校验
- (3)进行业务处理:用户注册
- (4)返回应答
- 13 render渲染函数
- 14 redirect 重定向函数
- 15 表单Form 和 视图View
- 16 Model class apps.user.models.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
1 ubantu mysql查看表结构
desc ...;
2 导入同级目录文件出现未解析引用错误
from ..app1 import 模块
3 第三方包——tinymce富文本编辑器
settings
INSTALLED_APPS=[
...
'tinymce;,
]
TINYMCE_DEFAULT_CONFIG={
'theme':'advanced',
'width':600,
'height'=400,
}
apps
from tinymce.models import HTMLField
class MODELNAME(models.Model):
detail=HTMLField(verbose_name=商品详情)
4 verbose_name,verbose_name_plural
5 搜索路径的添加
settings.py 将所有应用放在一个单独的 apps 文件夹中
import sys
sys.path.insert(0,os.path.join(BASE_DIR,‘apps'))
6 auto_now_add 和 auto_now
7 auth_user的表结构
8 在 Django 中定义 ForeignKey 字段时,必须指定 on_delete 参数,它决定了当引用的对象被删除时该如何处理
class OrderGoods(BaseModel):
'''订单商品模型类'''
order = models.ForeignKey('OrderInfo',on_delete=models.CASCADE, verbose_name='订单')
9 安装pymysql
项目名称下的__init__文件
import pymysql
pymysql.install_as_MySQLdb()
10 Django的第一个表在什么时候创建,什么情况下会创建表
11 上传文件到github时遇到OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0
右键文件夹 git bash here
执行git config --global http.sslVerify "false"命令关闭SSL验证
12 提交表单后编辑视图——视图处理流程(用户注册为例)
(1)接收数据
(2)进行数据校验
(3)进行业务处理:用户注册
(4)返回应答
def register_handle(request):
"""进行注册处理"""
#接收数据
username=request.POST.get('user_name')
password=request.POST.get('pwd')
email=request.POST.get('email')
allow=request.POST.get('allow')
#数据校验
if not all([username,password,email]):
#数据不完整
return render(request,'register.html',{'errmsg':'数据不完整'})
#校验邮箱
if not re.match(r'^[a-z0-9][\w.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',email):
return render(request,'register.html',{'errmsg':'邮箱格式不正确'})
if allow != 'on':
return render(request,'register.html',{'errmsg':'请同意协议'})
#进行业务处理
user = User.objects.create_user(username,email,password)
#返回应答,跳转到首页
return redirect(reverse('goods:index'))
13 render渲染函数
它负责将后端逻辑与前端展示相连接,生成用户最终看到的 Web 页面。
模板渲染:它将 Django 模板语言(DTL)与提供的上下文数据结合起来,生成最终的 HTML 页面。
请求处理:它接受 HttpRequest 对象作为参数,这允许模板访问请求中的数据,如用户会话、cookies、GET 和 POST 参数等。
响应生成:它返回一个 HttpResponse 对象,这个对象包含了渲染后的页面内容和任何必要的 HTTP 头信息,如内容类型(Content-Type)。
14 redirect 重定向函数
redirect 函数用于发出一个 HTTP 重定向命令,告诉浏览器或客户端去加载另一个 URL。这通常用于在某个操作完成后(如用户登录、注销、表单提交等)引导用户到另一个页面
15 表单Form 和 视图View
表单负责收集和验证用户输入,
而视图负责处理用户的请求、执行业务逻辑,并生成响应。
在 Django 中,表单和视图经常一起工作,以提供动态的 Web 应用程序功能
16 Model class apps.user.models.User doesn’t declare an explicit app_label and isn’t in an application in INSTALLED_APPS.
解决方案
settings.py:
BASE_DIR = Path(__file__).resolve().parent.parent
sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
'tinymce',#富文本编辑器
"user",#用户模块
"goods",#商品模块
"cart",#购物车模块
"order",#订单模块
]
user.apps.py:
from django.apps import AppConfig
class UserConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "apps.user"