千家信息网

Django怎么配置使用

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"Django怎么配置使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Django怎么配置使用"吧!1. 准备工作使用pip安装: pi
千家信息网最后更新 2025年01月19日Django怎么配置使用

本篇内容主要讲解"Django怎么配置使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Django怎么配置使用"吧!

1. 准备工作

使用pip安装: pip install Django

2. 基本配置

1)创建django程序

a. 终端命令: django-admin startproject mysite , IDE创建django程序时,本质上都是自动执行上述命令

2)目录结构如下:

3)配置文件 -- (settings.py)

a. 数据库

b. 模板

c. 静态文件

3. 创建App

a. 命令

python manage.py startapp cmdb

b. cmdb 目录结构如下:

4. 登录实例

a. templates目录下生成html文件,如login.html

        登录    

男: 女:

b. 修改url文件,定义路由规则

from django.contrib import adminfrom django.conf.urls import urlfrom cmdb import viewsurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^login/', views.login),]

c. 定义视图函数:app下views.py

from django.shortcuts import renderfrom django.shortcuts import HttpResponsefrom django.shortcuts import redirect# Create your views here.USER_LIST = {}def login(request):    if request.method == 'GET':    #判断请求方式        return render(request, 'login.html')    elif request.method == 'POST':        user = request.POST.get('user')   #post请求,单选、输入框获取值        pwd = request.POST.get('pwd')        sex = request.POST.get('sex')        if user and pwd:            USER_LIST['name'] = user            USER_LIST['pwd'] = pwd            USER_LIST['sex'] = sex            return render(request, 'success.html', {"user_list": USER_LIST})         else:            return HttpResponse('请求不能为空')    else:        return HttpResponse('请求方式不是get\post')   #HttpResponse("字符串")

d. 提交成功后,success.html页面 取值, hmtl模板获取 字典数据

        登录成功页面  {{ user_list.name}}  #获取字典中某个key的值   
    {% for k,v in user_list.items %} #循环字典
  • {{ k }} : {{ v }}
  • {% endfor %}

e. 通过浏览器访问: http://127.0.0.1:8000/login/ ,显示login.html登录页面,输入登录信息,登录成功后,获取的数据如下

总结:通过上面的例子,我们可以知道django的生命周期:

---->URL对应关系(匹配) --->视图函数 --->返回用户字符串

----> URL对应关系(匹配) --->视图函数 --->打开一个HTML文件,读取内容

5. 其他

request.GET.get('',None) #获取get请求发来的数据request.POST.get('',None) #获取post请求发来的数据return render(request, 'HTML模板的路径')return redirect('只能填写URL')

对应多选框、上传文件怎么获取值呢?

a. 多选框,html格式如下:

multiple="multiple" 表示多选
 

views 视图页面:

 city = request.POST.getlist('city')

页面访问结果:

b. 上传文件

主要方法

文件对象 = request.FILES.get('xx')文件名 = 文件对象.name 文件大小 = 文件对象.size文件内容 = 文件对象.chunks()

html格式, form表单需要添加属性:

enctype="multipart/form-data"

views视图:



# 上传文件        upload_file_obj = request.FILES.get('upload')        print(type(upload_file_obj), upload_file_obj)  # 2.jpg        #保存上传的文件到upload目录        upload_path = os.path.join('upload', upload_file_obj.name)        fw = open(upload_path, 'wb')        for line in upload_file_obj.chunks(): #chunks表示所有的数据库,是个迭代器            fw.write(line)        fw.close()

页面访问结果:

最终的views代码:

from django.shortcuts import renderfrom django.shortcuts import HttpResponsefrom django.shortcuts import redirectimport os# Create your views here.USER_LIST = {}def login(request):    if request.method == 'GET':    #判断请求方式        return render(request, 'login.html')    elif request.method == 'POST':        user = request.POST.get('user')   #post请求,单选、输入框获取值        pwd = request.POST.get('pwd')        sex = request.POST.get('sex')        #多选获取值        city = request.POST.getlist('city')        # 上传文件        upload_file_obj = request.FILES.get('upload')        print(type(upload_file_obj), upload_file_obj)  # 2.jpg        #保存上传的文件到upload目录        upload_path = os.path.join('upload', upload_file_obj.name)        fw = open(upload_path, 'wb')        for line in upload_file_obj.chunks(): #chunks表示所有的数据库,是个迭代器            fw.write(line)        fw.close()        if user and pwd:            USER_LIST['name'] = user            USER_LIST['pwd'] = pwd            USER_LIST['sex'] = sex            USER_LIST['city'] = city            USER_LIST['file'] = upload_file_obj.name            return render(request, 'success.html', {"user_list": USER_LIST})        else:            return HttpResponse('请求不能为空')    else:        return HttpResponse('请求方式不是get\post')   #HttpResponse("字符串")

6. 基于正则表达式的URL

简单例子如下:

a. 修改url文件,定义路由规则

urlpatterns = [    # url(r'^admin/', admin.site.urls),    # url(r'^login/', views.login),    url(r'^index/', views.index),    url(r'^detail/', views.detail),]

b. 视图 views

USER_DICT = {     "1": {"name": "root1", "email": "qwe1@163.com"},     "2": {"name": "root2", "email": "qwe2@163.com"},     "3": {"name": "root3", "email": "qwe3@163.com"},     "4": {"name": "root4", "email": "qwe4@163.com"},}def index(request):    return render(request, 'index.html', {"user_dict":USER_DICT})

c. 模板 index.html ,循环字典信息

点击任意信息可跳转到detail?nid=x页面,获取详细信息

        index    
    {% for k,v in user_dict.items %}
  • {{ v.name }}
  • {% endfor %}

d. 浏览器访问 http://127.0.0.1:8000/index/, 页面如下:

e. 点击页面上任意信息,可以跳转到detail详细页面, detail页面的views视图

def detail(request):    nid = request.GET.get('nid')   #get请求方式,或者到nid的值,即USER_DICT的key    detail_info = USER_DICT[nid]    return render(request, 'detail.html', {"detail_info": detail_info})

f. detail.html模板信息如下:

        详情页面  

详细信息

用户名:{{ detail_info.name }} 邮箱:{{ detail_info.email }}

g. 点击root2超链接,跳转到另一个页面,如下:

7. 一类url方式的优化

以上 上方的detail页面get请求时,使用的形式是 http:127.0.0.1:80/detail?nid=x 方式,nid的是动态获取,若觉得改方式比较low,可以更改为以下方式:

http://127.0.0.1:80/detail-x.html

a. url的优化写法

b.views的优化写法

c. html模板的优化写法

d. 浏览页面访问效果

8. 若urls进行了变更,那么涉及的urls也需要改动,多次变更后,可能修改就会有遗漏,有什么高效的解决方法吗?

a. 找到urls.py文件,修改路由规则

# url(r'detail/', views.detail),    # url(r'detail-(\d+).html/', views.detail),  #正则表达式    url(r'detail-(\d+).html/', views.detail, name='detail_name'),  #正则表达式

b, 找到views文件,进行修改

def index(request):    # return HttpResponse('index')    return render(request, 'index.html', {"user_dict": USER_DICT})# def detail(requerst):#     nid = requerst.GET.get('nid')#     detail_info = USER_DICT[nid]#     return render(requerst, 'detail.html', {"detail_info": detail_info})def detail(requerst,nid):   # nid指定的是(\d+)里的内容    detail_info = USER_DICT[nid]    return render(requerst, 'detail.html', {"detail_info": detail_info})

c. 在templates目录下的index.html

        字典循环获取    {{ user_dict.KEY1 }}        
    {% for k,v in user_dict.items %}
  • {{ v.name }}
  • {% endfor %}

到此,相信大家对"Django怎么配置使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0