• 【Django笔记】5 Django模板


    1.  Django-bootstrap3

    Bootstrap 是要给CSS/HTML 框架

    Django-bootstrap3 是Bootstrap3 集成到Django中,作为Django 的一个应用。

    (3 表示版本号)

    Django-bootstrap3 安装

    django-bootstrap3 · PyPI

    Installation

    1. Install using pip:

      pip install django-bootstrap3
      

      Alternatively, you can install download or clone this repo and call pip install -e ..

    2. Add to INSTALLED_APPS in your settings.py:

      INSTALLED_APPS = (
          # ...
          "bootstrap3",
          # ...
      )

    安装 bootstrap3 失败安装 bootstrap4 

     pip3  install django-bootstrap4

    pip  show  django-bootstrap4 

     guest/settings.py

    添加 

    'bootstrap4'
    1. INSTALLED_APPS = [
    2. 'django.contrib.admin',
    3. 'django.contrib.auth',
    4. 'django.contrib.contenttypes',
    5. 'django.contrib.sessions',
    6. 'django.contrib.messages',
    7. 'django.contrib.staticfiles',
    8. 'sign',
    9. 'bootstrap4'
    10. ]

    ImportError: cannot import name 'url' from 'django.conf.urls' (D:\software\python3\anconda3\Lib\site-packages\django\conf\urls\__init__.py)

    问题原因:

    https://wenku.csdn.net/answer/d0b45f1a337d4672b2b708c7dab43e61

    1. """guest URL Configuration
    2. The `urlpatterns` list routes URLs to views. For more information please see:
    3. https://docs.djangoproject.com/en/2.2/topics/http/urls/
    4. Examples:
    5. Function views
    6. 1. Add an import: from my_app import views
    7. 2. Add a URL to urlpatterns: path('', views.home, name='home')
    8. Class-based views
    9. 1. Add an import: from other_app.views import Home
    10. 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
    11. Including another URLconf
    12. 1. Import the include() function: from django.urls import include, path
    13. 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
    14. """
    15. #from django.urls import url
    16. from django.contrib import admin
    17. from django.urls import path
    18. from sign import views
    19. urlpatterns = [
    20. path(r'^admin/', admin.site.urls),
    21. path(r'^index/$', views.index), # 添加 index 、路径配置
    22. path(r'^login_action/$',views.login_action), # 处理登录请求
    23. path(r'^event_manage/$',views.event_manage) # 处理登录请求
    24. ]

    报错 : 

     关于django中path和url函数的使用介绍

    关于django中path和url函数的使用介绍_django path-CSDN博客

    1. #from django.urls import url
    2. from django.contrib import admin
    3. from django.urls import path
    4. from sign import views
    5. urlpatterns = [
    6. path('admin/', admin.site.urls),
    7. path('index/', views.index), # 添加 index 、路径配置
    8. path('login_action/',views.login_action), # 处理登录请求
    9. path('event_manage/',views.event_manage) # 处理登录请求
    10. ]

    path() 函数是 Django 2.0 版本引入的新函数,它更加直观和易用,支持使用 str 类型的路由,可以通过 , 等转换器来定义动态参数,而且不再需要使用正则表达式来匹配 URL,大大简化了 URL 配置的过程。

    url() 函数是 Django 1.x 版本中用于 URL 配置的函数,它的语法和 path() 不同,需要使用正则表达式来匹配 URL。

    输入 admin    admin123456

    http://127.0.0.1:8000/admin/

     add 添加用户 

    user1    user123456

    退出,用user1 进入

    登录失败 ;

     修改成密码为user12345678  登录成功 : 

     

    1. from django.shortcuts import render
    2. from django.contrib import auth
    3. # Create your views here.
    4. from django.http import HttpResponse
    5. from django.http import HttpResponse, HttpResponseRedirect
    6. # 定义inex 函数,通过HttpResponse 类向客户端返回字符创
    7. def index(request):
    8. # return HttpResponse("Hello Django!") # 使用Django 的render函数
    9. return render(request, "index.html")
    10. def login_action(request):
    11. if request.method == "POST":
    12. username = request.POST.get('username', "") # 字段对应表单的input属性
    13. password = request.POST.get('password', '')
    14. # 使用authenticate 函数认证处的用户名和密码。它接受两个参数
    15. #并且会在用户名密码正确的情况下返回一个user 对象否则autenticate() 返回None
    16. user=auth.authenticate(username=username,password=password)
    17. print(f"user:{user}")
    18. if user is not None:
    19. response = HttpResponseRedirect('/event_manage/') # 重定向
    20. auth.login(request,user)# 登录
    21. request.session['user'] = username # 将session 信息记录到浏览器
    22. #request.session['user'] = username # 将session 信息记录到浏览器
    23. return response
    24. # if username == 'admin' and password == "admin123":
    25. #
    26. # # return HttpResponse('login success')
    27. # response= HttpResponseRedirect('/event_manage/') # 重定向
    28. # #response.set_cookie('user',username,3600) # 添加浏览器
    29. # request.session['user']=username # 将session 信息记录到浏览器
    30. # return response
    31. else:
    32. return render(request, "index.html", {'error': 'username or password error!'})
    33. # 发布会管理
    34. def event_manage(request):
    35. #username=request.COOKIES.get("user","")# 读取浏览器cookie
    36. username=request.session.get("user","") # 读取浏览器session
    37. return render(request, "event_manage.html",{"user":username})

     

    @login_required

    sign/views.py

    1. from django.contrib.auth.decorators import login_required
    2. from django.shortcuts import render
    3. from django.contrib import auth
    4. # Create your views here.
    5. from django.http import HttpResponse
    6. from django.http import HttpResponse, HttpResponseRedirect
    7. # 定义inex 函数,通过HttpResponse 类向客户端返回字符创
    8. def index(request):
    9. # return HttpResponse("Hello Django!") # 使用Django 的render函数
    10. return render(request, "index.html")
    11. def login_action(request):
    12. if request.method == "POST":
    13. username = request.POST.get('username', "") # 字段对应表单的input属性
    14. password = request.POST.get('password', '')
    15. # 使用authenticate 函数认证处的用户名和密码。它接受两个参数
    16. #并且会在用户名密码正确的情况下返回一个user 对象否则autenticate() 返回None
    17. user=auth.authenticate(username=username,password=password)
    18. print(f"user:{user}")
    19. if user is not None:
    20. response = HttpResponseRedirect('/event_manage/') # 重定向
    21. auth.login(request,user)# 登录
    22. request.session['user'] = username # 将session 信息记录到浏览器
    23. #request.session['user'] = username # 将session 信息记录到浏览器
    24. return response
    25. # if username == 'admin' and password == "admin123":
    26. #
    27. # # return HttpResponse('login success')
    28. # response= HttpResponseRedirect('/event_manage/') # 重定向
    29. # #response.set_cookie('user',username,3600) # 添加浏览器
    30. # request.session['user']=username # 将session 信息记录到浏览器
    31. # return response
    32. else:
    33. return render(request, "index.html", {'error': 'username or password error!'})
    34. # 发布会管理
    35. @login_required
    36. def event_manage(request):
    37. #username=request.COOKIES.get("user","")# 读取浏览器cookie
    38. username=request.session.get("user","") # 读取浏览器session
    39. return render(request, "event_manage.html",{"user":username})

     清理缓存 

     直接访问

    http://127.0.0.1:8000/event_manage/

     在访问被@login_reuqired 装饰的视图时,默认跳转的URL 中包含“acount/login/”。

    修改.../urls.py 增加新的路径位置:

    path('',views.index),
    path('accounts/login/',views.index)

     跳转到 登录

    1. #from django.urls import url
    2. from django.contrib import admin
    3. from django.urls import path
    4. from sign import views
    5. urlpatterns = [
    6. path('',views.index),
    7. path('admin/', admin.site.urls),
    8. path('index/', views.index), # 添加 index 、路径配置
    9. path('login_action/',views.login_action), # 处理登录请求
    10. path('event_manage/',views.event_manage) , # 处理登录请求
    11. path('accounts/login/',views.index)
    12. ]

  • 相关阅读:
    QT+OSG/osgEarth编译之二十三:Shapelib+Qt编译(一套代码、一套框架,跨平台编译,版本:Shapelib-1.5.0)
    cadence virtuoso layout drc error
    智能交通和自动驾驶技术
    YC++编译器最新版主要功能及特点简介, 请广大的编程爱好者试用,并且希望能提出更多宝贵意见,使此软件更加完善。谢谢!
    时间序列(四):单变量时间序列的神经网(LSTM)
    第六章《凸优化核心过程:真正搞懂梯度下降过程》
    Elasticsearch:生成式人工智能带来的社会转变
    计算机组成原理-存储器概念
    Python爬虫-IP隐藏技术与代理爬取
    BI系统打包Docker镜像及部署的技术难度和实现
  • 原文地址:https://blog.csdn.net/oDianZi1234567/article/details/133467342