Django 遇见的一些坑,文件上传 POST urls Django中多种重定页面跳转

Django 遇见的一些坑,文件上传 POST urls

其实也不算是坑吧,有官方文档,只不过没看明白,
先转载一下借鉴一下常见的问题
Django常见错误总结: 细数我们一起走过的大坑
Django中使用mysql数据库并使用原生sql语句操作
Django中使用mysql数据库这个到目前为止,我也没搞明白,我是开发PHP的 一时好奇就看了一下

1.坑一
文件上传POST 第一开始文件上传一直提示我GBK

gbk问题
然后我就纳闷了, 啥玩意,后来 百度我才发现是字符集问题
最后在头部声明 # coding: utf-8 或者 # -- coding: UTF-8 --。 然后问题才解决
在跳转到提交页面,后面要加 name
在这里插入图片描述
2.坑二
文件添加的话 腰子from 表单里面写上 enctype=“multipart/form-data”

<form  action="/search"  method="post" enctype="multipart/form-data">
	<!-- {% csrf_token %} -->
	<input name="qs"type="text" >
	<input name="sqs"type="text" >
	<input name="files" type="file">
	<input type="submit" value="submit">
</form>

写入这句话之后发现 接收不到POST的数据了, 百度了一下需要,上传图片和文件时,模板中form一定加enctype="multipart/form-data“属性, 同时视图中别忘了加request.FILES, 如form =UploadForm(request.POST, request.FILES)。
或者 关闭.csrf功能
在settings.py 里面

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

我是选择了关闭了csrf 然后就可以成功接收数据; 了

def search(request):
	request.encoding='utf-8'
	context = request.FILES.get("files", None)
	destination = open("static/" + context.name, 'wb+')
	for x in context.chunks():
		destination.write(x)

	return HttpResponse('ok')
	# else :
		# message = '未知数据提交'
		# return HttpResponse(message)
		

上传图片
3.坑三
调用静态文件
在settings.py文件家里面设置

STATIC_URL = '/static/'
# STATIC_ROOT =  os.path.join(BASE_DIR,'static')

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "templates"),
    os.path.join(BASE_DIR, "static"),
)

文件结构
文件结构
然后需要在视图层调用, 调用方法

<img style="width:50px" src="static/lo.jpg" alt="">

static是 文件 然后 lo.jpg是底下下的文件 还有一种调用方法是 {% STATIC_URL %},我不好使,可能是我不会配置, 有会的话就 下面评论吧 一起学习
4.坑④
视图渲染 视图渲染一定要在 settings.py 写啥文件名字
‘DIRS’: [BASE_DIR+"/templates",], templates这是我的视图文件名字,你们要改成你们的


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR+"/templates",],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

最后就是 urls.pt

from django.conf.urls import url
# from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from . import view
from django.urls import path
urlpatterns = [
url(r'^test$', view.hello),
# url(r'^search$', view.search),
path("search", view.search,name="search"),
 # url(r'^search',view.search,name='search'),
# staticfiles_urlpatterns(),
]

path调用的是python第三方模块或框架,而url则是自定义的模块

1.x版本用url,2.x版本用path

url(r’^index/$’,views.index),

path(‘index/’,views.index),

页面 跳转 携带参数重定向
重定向

from django.http import HttpResponseRedirect  
def hello(request):
		return HttpResponseRedirect('跳转地址')  #跳转到主界面
		#如果需要传参数
		return HttpResponseRedirect('/commons/index/?message=error')  

HTML 跳转

<a href="/axf/login/">登陆</a>
或者
<a href="{% url 'axf:login' %}">登陆</a>

转载
Django中多种重定向方法使用
Django页面跳转

这是目前所遇见的问题 可以吧问题评论到评论区 我们一起交流!!!111

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django ,登录页面跳转通常需要以下步骤: 1. 在 `views.py` 文件定义一个函数处理登录逻辑,可以使用 Django 自带的 `LoginView` 或者自定义视图。 2. 在 `urls.py` 文件配置登录页面的 URL,指向上一步定义的登录视图函数。 3. 在模板文件编写登录表单,表单的 `action` 属性应该指向登录 URL,这样用户提交表单时就会触发登录视图函数。 4. 在登录视图函数处理用户提交的表单数据,验证用户身份,如果登录成功则跳转到指定页面,否则返回错误信息。 下面是一个简单的示例代码: **views.py:** ```python from django.contrib.auth.views import LoginView class CustomLoginView(LoginView): template_name = 'login.html' ``` **urls.py:** ```python from django.urls import path from .views import CustomLoginView urlpatterns = [ path('login/', CustomLoginView.as_view(), name='login'), ] ``` **login.html:** ```html {% extends 'base.html' %} {% block content %} <form method="post" action="{% url 'login' %}"> {% csrf_token %} {{ form.as_p }} <button type="submit">登录</button> </form> {% endblock %} ``` 在这个示例,我们使用了 `LoginView` 类来处理登录逻辑,并且自定义了登录页面的模板。在 `urls.py` 文件,将 `/login/` URL 映射到 `CustomLoginView` 视图函数。在登录模板 `login.html` ,我们使用 Django 自带的表单组件 `{{ form.as_p }}` 来生成登录表单,并将表单的 `action` 属性设置为登录 URL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值