Django——路由
django-admin stratproject day3 启动项目的命令:python manage.py runserver 端口号 创建应用:python manage.py startapp app名称
Django项目是settings文件
BASE_DIR : 项目的根目录路径 DEBUG: 我们配置django项目的启动模式,这种方式启动之后执行过程中有错误会报错。 当DEBUG的值为False时 , 表示在生产环境中启动。 ALLOWED_HOSTS:可以设置允许访问这个项目的host请求头的值 []:空列表表示只允许host请求头为本地地址即127.0.0.1或者localhost访问 ['198.168.56.32' , '197.168.154.23',……]:表示允许被指定的ip地址可以访问 ['*']:表示允许任何主机访问 INSTALLED_APPS:以字符串的形式注册应用。 MIDDLEWARE:注册中间件 ROOT_URLCONF:配置项目中根目录级别的urls文件 TEMPLATES:配置html文件存放的路径 DATABASES:配置指定的数据库 django会自动的配置sqlite数据库 , 小型的数据库 STATIC_URL: 静态文件配置
在django中是在urls文件中使用path函数讲路由和视图函数的对应关系进行映射。
视图函数
# views.py # 视图函数 def index(request): # 响应一个字符串数据 # HttpResponse 在内部传入一个字符串参数 , 接着返回给浏览器进行响应 return HttpResponse('大家好 , 明天就是疯狂星期四') # urls.py # 配置url urlpatterns = [ path('admin/', admin.site.urls), # 路由访问 : http://127.0.0.1:8000//index/ # path('index/', views.index), path('index/', views.index) ] # 响应前端页面 def text(request): # render 将html文件模板化 # 将html文件 , 代替进入数据之后返回一个含有html标签的字符串 # 接着将字符串渲染之后返回给浏览器进行响应 # render(request , html文件名 , 字典数据) return render(request , 'hello.html') def info(request): # render 传入的参数必须是字典类型 # return render(request , 'info.html' , {'name':'帅气的宇杰' , 'age':18}) data_dict = {'name':'叶鹏飞' , 'age':18} return render(request , 'info.html' , data_dict) def info2(request): # locals方法:把当前所在的名称空间内的所有名字对应的数据全部都传递给html文件 # 这个方法当数据量比较多的时候可以使用 , 数据较少还是使用字典的形式比较好 , # 数据更加精确 , 节约资源 name = '某杰' age = 20 return render(request, 'info.html', locals()) # redirect : 重定向,跳转url def bd(request): # 重定向 , url跳转 return redirect('https://baidu.com')
在django中路由配置就在urls文件中。
路由:用户可以使用url可以访问网上的资源 , 浏览器会根据url发送数据请求 , 服务器会根据请求的url去查询对应的关系 然后再把数据进行返回。
url的查找是从列表中从上往下查找。
在一个django项目中是可以存在多个urls.py文件进行url和视图函数的对应关系配置。但是只允许其中一个被作为路由的入口(所有urls的老大) , 这个入口都是在与项目同名的文件目录下的urls文件。并且在创建项目的时候以及自动的将这个文件配置到setting文件中了。
正则匹配路由:主要是用来对其进行分组 , 在进行对应关系的时候要使用re_path进行配置
使用():表示一个组
有名分组和无名分组
无名分组 url后面接收一个数据 , 传递到对应的视图函数中。 有名分组 (?P<name>正则表达式) 接收到的参数会以关键字参数传递给视图函数
# 无名分组 , 接收url后面的数据 re_path('text/(\d+)/' ,views.demo), # 有名分组 re_path('text2/(?P<age>\d+)/' , views.demo2) # 视图函数 def demo(request , data): return HttpResponse(f'无名分组 , 接收到的数据:{data}') def demo2(request , age): return HttpResponse(f'有名分组 , 接收到的数据:{age}')
登录判断
def login(request): # request , 请求方式 , 接收到的数据 # request 接收参数 request.请求方式.get(对应数据值的键) # 获取请求方式 request.method if request.method == 'GET': return render(request , 'login.html') ''' 因为django的安全机制 , 不能直接获取到html中form中的数据 在from中写入{% csrf_token%} ''' name = request.POST.get('user') pw = request.POST.get('password') # 判断密码是否正确 if name == 'ac' and pw == '456': return redirect('http://www.cxy521.com/') else: return render(request , 'login.html',{'error': '登录失败'})
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术