zoukankan      html  css  js  c++  java
  • Python Django 的使用

    Django
    1. 创建project
      diango-admin startproject mysiste

      # project
      mysite
        mysiste # 配置文件
          - settings.py # 配置文件
          - urls.py # 路由系统,一个URL指向一个函数
          - wsgi.py # WSGI

      manage.py # django程序启动文件

    2.创建APP 一个project有多个APP
      1.cd mysite
      2.python manage.py startapp APP名称

    3.简单的编写代码
      urls.py 添加映射关系
      view.py 添加函数

    4.启动django程序
      1.python manage.py runserver 127.0.0.1:8000
      2.pycharm启动
        设置好IP和端口
        启动django程序

    5.如果要使用模板
      在templates加html,当然 也可以在settings.py中配置html的目录
      在views里的函数中,直接return render(requset,'01.html')


    6.使用静态模板
      如果要使用jquery,要在配置文件中设置
      STATIC_URL = '/static/'
      STATICFILES_DIRS=(
      os.path.join(BASE_DIR,'statics'),
      )


      其中上面STATIC_URL = '/static/'的static 与
      使用时<script src="/static/jquery-3.5.0.js"></script> 中的static要一致,也可以随意更改名字

    7.表单提交

      1.可以提交数据给HTML return render(request, 'index.html',{'data':USER_INPUT})
      2.特殊语句,如for循环需要 {% for item in data %} 和结束{% endfor %} 中间的数据是{{ item.user }}

    问题:
    1.出现:Forbidden (CSRF cookie not set.): /index/
    到settings.py 把MIDDLEWARE中的'django.middleware.csrf.CsrfViewMiddleware', 注释掉
    2.提交时后台没反应
    if(request.method=='POST'): 中的POST要大写 不是小写

    不连接数据库的例子:

     1 from django.shortcuts import render
     2 from django.shortcuts import HttpResponse
     3 # Create your views here.
     4 USER_INPUT=[
     5 {'user':'u1','email':'e1'},
     6 {'user':'u2','email':'e2'},
     7 ]
     8 def index(request):
     9     # return HttpResponse('123')
    10     if(request.method=='POST'):
    11         user=request.POST.get('user',None)        # 如果想要获取不存在的东西就会报错
    12         email=request.POST.get('email',None)       #  所以需要应该默认值,第二个参数就是默认值
    13         temp={'user':user,'email':email}
    14         USER_INPUT.append(temp)
    15     # 模板引擎,获取index.html模板 然后把数据{'data':USER_INPUT} 渲染
    16     # 如:把{% for item in data %} {% endfor %} 变成Python中的for循环
    17     return render(request, 'index.html',{'data':USER_INPUT})
    Views
    1 from django.contrib import admin
    2 from django.urls import path
    3 from cmdb import views
    4 urlpatterns = [
    5     path('admin/', admin.site.urls),
    6     path('index/',views.index)
    7 ]
    url.py
    1 STATIC_URL = '/static/'
    2 STATICFILES_DIRS=(
    3     os.path.join(BASE_DIR,'statics'),
    4 )
    setings.py
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <h1>用户输入:</h1>
     9     <form action="/index/" method="post">
    10         <input type="text" name="user">
    11         <input type="text" name="email">
    12         <input type="submit" name="提交">
    13     </form>
    14     <h1>数据展示:</h1>
    15     <table border="1">
    16         {% for line in data %}
    17             <tr>
    18                 <td>{{ line.user }}</td>
    19                 <td>{{ line.email }}</td>
    20             </tr>
    21         {% endfor %}
    22     </table>
    23     <script src="/static/jquery-3.5.0.js"></script>
    24 </body>
    25 </html>
    templas


    8.连接数据库,操作数据库
    ORM

      modals.py
        class UserInfo(models.Model): # 需要继承类
          user = models.CharField(max_length=32)
          email = models.CharField(max_length=32)

      注册APP:
        在setings.py 中的 INSTALLED_APPS 添加APP名称

      创建数据库:
        执行命令:
        python manage.py makemigrations
        python manage.py migrate

    9.操作数据库:
      创建:models.类.objects.create()
      获取:models.类.objects.all()

    连接数据库则需要替换

     1 from django.shortcuts import render
     2 from django.shortcuts import HttpResponse
     3 from cmdb2 import models
     4 
     5 # Create your views here.
     6 
     7 def index(request):
     8     # return HttpResponse('123')
     9     if(request.method=='POST'):
    10         u=request.POST.get('user',None)        # 如果想要获取不存在的东西就会报错
    11         e=request.POST.get('email',None)       #  所以需要应该默认值,第二个参数就是默认值
    12         models.UserInfo.objects.create(user=u,email=e)
    13     # 模板引擎,获取index.html模板 然后把数据{'data':USER_INPUT} 渲染
    14     # 如:把{% for item in data %} {% endfor %} 变成Python中的for循环
    15     data_list = models.UserInfo.objects.all()
    16     return render(request, 'index.html',{'data':data_list})
    Views
    1 from django.db import models
    2 
    3 # Create your models here.
    4 class UserInfo(models.Model):  # 需要继承类
    5     user = models.CharField(max_length=32)
    6     email = models.CharField(max_length=32)
    models.py
    1 from django.contrib import admin
    2 from django.urls import path
    3 from cmdb2 import views
    4 urlpatterns = [
    5     path('admin/', admin.site.urls),
    6     path('index/',views.index)
    7 ]
    url.py

    setings.py里添加

    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     'cmdb2',
    9 ]
    setings.py
  • 相关阅读:
    智器SmartQ T7实体店试用体验
    BI笔记之SSAS库Process的几种方案
    PowerTip of the Day from powershell.com上周汇总(八)
    PowerTip of the Day2010071420100716 summary
    PowerTip of the Day from powershell.com上周汇总(十)
    PowerTip of the Day from powershell.com上周汇总(六)
    重新整理Cellset转Datatable
    自动加密web.config配置节批处理
    与DotNet数据对象结合的自定义数据对象设计 (二) 数据集合与DataTable
    在VS2003中以ClassLibrary工程的方式管理Web工程.
  • 原文地址:https://www.cnblogs.com/otome/p/12823749.html
Copyright © 2011-2022 走看看