zoukankan      html  css  js  c++  java
  • python学习日记——django基础

    零、环境搭建

    1.python3的安装
    #wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
    #tar -zxvf Python-3.6.6.tgz
    #cd Python-3.6.6
    #./configure --prefix=安装路径
    #make&&make install
    2.pip3的安装
    yum install python3-pip
    3.Django框架安装
    pip3 install django
    4.sqlite升级

    一、基础

    1.创建django项目(即下载/部署web框架代码)
    命令:django-admin startproject mysite
    生成名为mysite的工程
    目录结构
    mysite
      mysite
        settings.py //
        urls.py //
        wsgi.py //
      manage.py
    2.通过manage.py文件管理项目
    命令:python manage.py startapp blog
    创建了名为blog的应用
    目录结构
    mysite
      blog
        admin.py //django提供的后台管理系统
        apps.py //django的生成app名称的文件
        models.py //操作数据库使用
        tests.py //单测使用
        views.py //存放各种函数
      mysite
        settings.py //django项目相关配置(应用、数据库等)
        urls.py //url分发
        wsgi.py //对请求(or响应)按特定规则进行封装
      manage.py
      templates //存放模板文件,从views中获取数据并回显
      static //存放css、js、img等静态文件

    番外:os.path.join(路径,文件)——返回根据不同操作系统拼接的文件路径
    元组中需要注意一下逗号问题
    STATIC_URL = '/static/' //静态文件路径的别名,按照此处的路径才能找到文件
    STATICFILES_DIRS=( //静态文件的根目录配置
      os.path.join(BASE_DIR,"static"),
    )
    3.render(渲染)方法——template.render(Context({"key1":value1,"key2":value2}))
    return render(请求对象,模板文件名,数据)
    def demo(request):
      value1="我的值会被传到网页上"
      value2="我的key值需要与页面中引用的地方相对应"
      return render(request,"index.html",{"key1":value1,"key2":value2})
    番外:模板中数据引入<h1>{{key1}}</h1>
    模板中文件引入<script src="{%static 'jquery-3.1.1.js'%}"></script>
    return render(request,"index.html",local())——此时模板中可以使用该函数中变量的值
    return redirect("/login/")——路由重定向,会改变浏览器地址栏的网址,重走新路由的渲染加载流程
    4.url控制
    urlpatterns = [
      path(正则,函数,别名),
    ]
    url中分组:用小括号括起路径中的参数,参数会按顺序传递到函数中
    无命名分组:
    2.0之前的版本
    path('admin/(d{4})$',view.fun)
    2.0之后的版本
    path('articles/<int:year>/<path:path>/<str:str>/', views.fun),
    def fun(request,year){...} //此处的year的命名可以任意替换
    有命名分组:
    2.0之前的版本
    path('admin/(?P<year>d{4})/(?P<month>d{2})',view.fun)
    2.0之后的版本
    re_path('articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[w-_]+)/', views.article_detail),
    def fun(request,year,month){...} //此处的year与month的命名不可改变
    别名:通过{% url '别名'%}方式渲染绝对路径

    url分发:url("blog/",include('blog.urls'))——以blog开头的路径需要进入blog应用下urls文件中去匹配(先匹配blog,后面的路径进入blog.urls去匹配,如:blog/article中,blog目录下urls文件中需要配置url("article",views.article))

    二、model(数据库相关)

  • 相关阅读:
    oracle 中有数据但是sql查询不出来结果(中文)
    linux mac 命令行 远程连接ssh提示IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY解决
    各地图坐标系知识及其转换方法
    Arcgis更新sde库许可
    运营商的三大数据域——B域,O域,M域
    SQL语句大全,所有的SQL都在这里
    苹果手机开启热点后,电脑搜索不到
    ArcgisServer在Linux系统上更新许可
    Linux 查询文件内容重复数 uniq、sort命令
    Atom 配置 Python
  • 原文地址:https://www.cnblogs.com/ftxy/p/12007104.html
Copyright © 2011-2022 走看看