美文网首页
django框架搭建与使用

django框架搭建与使用

作者: John_Phil | 来源:发表于2019-07-20 14:04 被阅读0次

    使用Pycharm图形化界面创建

    这里推荐使用Pycharm,它功能强大,界面友好。

    1,点击:file——》new project,出现下面的对话框。

    选择Django栏目,输入项目名称,这里采用国际惯例的mysite。选择Python解释器版本,点击create创建。

    2,Django将自动生成下面的目录结构:
    与项目同名的目录中是配置文件,
    各文件和目录解释:

    外层的mysite目录与Django无关,只是你项目的容器,可以任意命名。
    manage.py:一个命令行工具,用于与Django进行不同方式的交互脚本,非常重要,也是Django的管理主程序。
    内层的mysite/ 目录是真正的项目文件包裹目录,他的名字是你引用内部文件的包明,例如:mysite.urls。
    mysite/init.py : 一个定义包的空文件。
    mysite/settings.py : 项目的主配置文件
    mysite/urls.py : 路由文件,所有的任务都是从这里开始分配,相当于Django驱动站点的内容表格。
    mysite.wsgi.py : 一个基于WSGI的web服务器进入点,提供底层的网络通信功能(通常不用关心)


    django目录结构

    使用terminal终端创建

    进入指定的项目保存目录,然后运行下面的命令:

    pip3 install django
    django-admin startproject webtest3
    
    

    这样就在目录下面生成一个webtest3目录,也就是我们的Django项目的根目录。它包含了一系列自动生成的目录和文件,具备各自专有的用途。

    APP应用和project项目的区别
    一个APP实现某个功能,比如博客,公共档案数据库或者见到的投票系统
    一个project是配置文件和多个APP的集合,这里APP组合成整个站点
    一个project可以包含多个APP
    一个APP可以属于多个project
      所有的APP共享项目资源。

    APP的存放位置可以是任何地点,但是通常都将他们放在与manage.py脚本同级的目录下,这样方便导入文件。

    在pycharm下面的terminal终端中输入命令(pycharm中没有可以创建APP的图形化按钮,需要在终端中输入命令):

    python manage.py startapp aaa
    python manage.py startapp polls
    

    这样就创建了一个叫做aaa和polls的APP,Django自动生成“aaa” 与 polls文件夹


    目录

    运行web服务

    方法一:命令行的运行方式为:
    python manage.py runserver 127.0.0.1:8000
    方法二:运行Edit Configurations

    选择edit configuration 修改ip 与端口号

    OK之后,点击绿色的三角,web服务就运行起来了


    运行成功提示

    MVT模型与MVC模型

    MVT中 Model 是一样的 V view 相当于 mvc中的 control T template 与mvc中的 view一样
    所以对应关系为 MVC------>MTV

    实现登录功能

    一.配置静态文件存放js css img 等
    新建static文件夹,更改set中静态文件位置


    创建静态文件目录
    修改配置文件静态文件目录路径

    二.配置url
    其中如果涉及反向解析,需要设置namespace name appname


    主url
    子url

    四.反向生成数据库表
    在model中将设计好的数据库表进行创建,生成 迁移文件 再生成数据库表

    pip3 install mysqlclient
    

    需要在setting中注册对应的app


    注册app

    修改数据库配置 这里使用mysql


    数据库配置
    设计表中的属性
    我们要在pycharm的teminal中通过命令创建数据库的表,有两条命令,分别是:
    python manage.py makemigrations
    

    通过运行makemigrations命令,相当于告诉Django你对模型有改动,并且你想把这些改动保存为一个“迁移(migration)”。
    migrations是Django保存模型修改记录的文件,这些文件保存在磁盘上。在例子中,它就是cmdb/migrations/0001_initial.py,你可以打开它看看,里面保存的都是人类可读并且可编辑的内容,方便你随时手动修改。


    生成的迁移文件在团队开发时可以上传svn或github

     再输入命令:

    Python manage.py migrate
    

    将操作同步到数据库。


    image.png

    三.设计MVT
    login.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <script src="/staticaa/js/jquery-1.11.0.min.js"></script>
        <script>
    
              $(function(){
                    alert("jquery has loaded !")
                })
    
        </script>
    
    </head>
    <body>
    
    <form action="../cmdb/check" method="post">
        {% csrf_token %}
        <input type="text" name="username">
        <input type="password" name="password">
        <input type="submit"> <br>
        <input type="button" value="注册" onclick="JavaScript :location.href='../cmdb/register'">
    </form>
    
    {% for n in userlist %}
        <h1>{{ n.user }}</h1>
        <h1>{{ n.pwd }}</h1>
    {% endfor %}
    </body>
    </html>
    

    main.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    welcome {{ username}} <br>
    this is the main page
    
    {% for n in userinfo %}
        <h1> {{ n }}</h1>
    {% endfor %}
    
    {% for n in iteminfo %}
        <h2> {{ n.name }}</h2>
        <h2> {{ n.price }}</h2>
        <h2> {{ n.info }}</h2>
    
    {% endfor %}
    
    
    </body>
    </html>
    

    设计views

    def index(request):
        # return HttpResponse("hello!")
        return render(request,"login.html")
    
    
    def check(request):
       username= request.POST.get("username",None)
       password= request.POST.get("password", None)
       print("check:"+username+password)
       # get()
       # 方法:有且只有一个查询结果时才有意义;如果有多个查询结果或者没有查询结果,报错;所以,返回值:model对象
       couldlogin=False
       try:
          models.Userinfo.objects.get(user=username,pwd=password)
          couldlogin=True
       except Exception as ex:
        print(ex)
        print("查无此用户")
       if couldlogin:
            #返回复杂类型
          return render(request,"main.html",{"username":username,"userinfo":["tom",19,"man"],"iteminfo":[{"name":"华为手机","price":3000,"info":"华为也能照亮你的美"},{"name":"华为手机2","price":3000,"info":"华为也能照亮你的美"}]})
       else:
           return redirect("/cmdb/login")
    

    url

        path("login", views.index),
        path("check", views.check),
    
    登录页面 登陆成功

    相关文章

      网友评论

          本文标题:django框架搭建与使用

          本文链接:https://www.haomeiwen.com/subject/opvakctx.html