django初学

###有名分组无名分组反向解析
# 无名分组反向解析
url(r'^index/(\d+)/',views.index,name='xxx')
前端:
{% url 'xxx' %}
后端:
from django.shortcus import reverse
reverse('xxx', args(参数, ))

# 有名分组反向解析
url(r'^index/(?P<name>\d+)/',views.index,name='xxx')
# 方式一
前端:
{% url 'xxx' name=参数 %}
后端:
reverse('xxx', kwargs={'name': 参数})
# 方式二:
前端:
{% url 'xxx' %}
后端:
reverse('xxx', args(参数, ))


###路由分发
```python
总路由
from django.conf.urls import url, include
urlpatterns = [
  url(r'^app01/', include('app01.urls'),
  url(r'^app02/', include('app02.urls'),
]
# 子路由
app01
from django.conf.urls import url
from app01 import views
urlpatterns = [
  url(r'^index/', views.xxx),
]
url: 127.0.0.1:8000/app01/index/

###名称空间
正常情况下的反向借洗是没有办法自动识别前缀的
解析的时候需要 reverse('app01:index')
一般来讲, 有多个app的时候我们在起别名的时候会加上app的前缀
如name='app01_index'

###伪静态
  将一个动态网页伪装成静态网页
  伪装的目的在于增大本网站的SEO查询力度
  并且增加搜索引擎收藏本网站的概率
  在路由名后面加上.html
  url(r'^index.html', views.xx)


###虚拟环境
创建方式有两种
第一种: 在pycharm中创建
第二种, 使用命令行创建
进入到想要创建虚拟环境的文件夹下
virtualenv 环境名称
# 也可以选择解释器
virtualenv 环境名称 --python=解释器的安装路径
启动虚拟环境;
# 进入到环境的Scripts目录下
activate.exe 激活环境
deactivate 退出虚拟环境

###JsonResponse对象
"""
json格式的数据有什么用?
	前后端数据交互需要使用到json作为过渡 实现跨语言传输数据

前端序列化
	JSON.stringify()					json.dumps()
	JSON.parse()							json.loads()
"""
import json
from django.http import JsonResponse
def ab_json(request):
    user_dict = {'username':'jason好帅哦,我好喜欢!','password':'123','hobby':'girl'}

    l = [111,222,333,444,555]
    # 先转成json格式字符串
    # json_str = json.dumps(user_dict,ensure_ascii=False)
    # 将该字符串返回
    # return HttpResponse(json_str)
    # 读源码掌握用法
    # return JsonResponse(user_dict,json_dumps_params={'ensure_ascii':False})
    # In order to allow non-dict objects to be serialized set the safe parameter to False.
    # return JsonResponse(l,safe=False)  
    # 默认只能序列化字典 序列化其他需要加safe参数	

### form表单上传文件后端如何操作
"""
form表单上传文件类型的数据
	1.method必须指定成post
	2.enctype必须换成formdata

"""
def ab_file(request):
    if request.method == 'POST':
        # print(request.POST)  # 只能获取普通的简直对数据 文件不行
        print(request.FILES)  # 获取文件数据
        # <MultiValueDict: {'file': [<InMemoryUploadedFile: u=1288812541,1979816195&fm=26&gp=0.jpg (image/jpeg)>]}>
        file_obj = request.FILES.get('file')  # 文件对象
        print(file_obj.name)
        with open(file_obj.name,'wb') as f:
            for line in file_obj.chunks():  # 推荐加上chunks方法 其实跟不加是一样的都是一行行的读取
                f.write(line)

    return render(request,'form.html')

- [ ] 
posted @ 2022-05-14 16:11  努力搬砖的zh  阅读(25)  评论(0)    收藏  举报