zoukankan      html  css  js  c++  java
  • python---django初步了解以及安装(包括Django网页首次无法访问的原因及解决方法,以及在linux服务器上布置无法启动的原因)

    pip install Django

    相关网站资源:

    Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。

    Django是一个开放源代码的Web应用框架,由Python写成。

    Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。

    Django安装以及下载手册,注意版本对应,安装后最后将Django安装路径添加到环境变量中,方便使用

    1.开始创建项目:

    django-admin.py startproject HelloWorld(这是项目名)

    若是不成功,查看Django路径下文件

                98,194 chardetect.exe
                98,236 django-admin.exe
                   182 django-admin.py
                98,203 easy_install-3.5.exe
                98,203 easy_install.exe
                98,175 pip.exe
                98,175 pip3.5.exe
                98,175 pip3.exe

    可以看见django-admin.exe

    所以可以直接使用exe文件来创建项目

    django-admin startproject HelloWorld(这是项目名)

    即可成功

    查看文件夹HelloWorld  ---项目的容器

    manage.py       --Django项目里面的工具,通过它可以调用django shell和数据库等
    HelloWorld:       --文件夹
        __init__.py    --一个空文件,告诉 Python 该目录是一个 Python 包
        settings.py    --包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
        urls.py      --该 Django 项目的 URL 声明; 负责把URL模式映射到应用程序
        wsgi.py      --一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目

    创建应用app(加入HelloWorld目录项目容器)真正网站中应用不止一个,像支付,聊天等多个应用在同一个项目

    python manage.py startapp blog

    发现在项目容器中多了blog文件夹,查看目录

    ./blog:
    total 5
    -rwxrwx---+ 1 Administrators None  0 Mar 20 23:20 __init__.py
    -rwxrwx---+ 1 Administrators None 66 Mar 20 23:20 admin.py
    -rwxrwx---+ 1 Administrators None 88 Mar 20 23:20 apps.py
    drwxrwx---+ 1 Administrators None  0 Mar 20 23:20 migrations
    -rwxrwx---+ 1 Administrators None 60 Mar 20 23:20 models.py
    -rwxrwx---+ 1 Administrators None 63 Mar 20 23:20 tests.py
    -rwxrwx---+ 1 Administrators None 66 Mar 20 23:20 views.py

    启动项目python manage.py runserver 8080出错

    File "C:UsersAdministratorAppDataLocalProgramsPythonPython35libwsgirefsimple_server.py", line 36, in close
        self.status.split(' ',1)[0], self.bytes_sent
    AttributeError: 'NoneType' object has no attribute 'split'

    解决方案:

    在经过了一会儿的排查和网上资料的查找,发现Django对于python3以上并不是多么友好,于是就像在python2.7下使用,

    奈何原来安装的python2.7版本中并不自带pip,想着单独安装pip,网上找了一堆方案...,最后决定安装python2.7.10吧,这款版本自带pip

    开始卸载原有python2.7,在我的电脑,控制面板中可以找到python2.7,进行卸载。

    开始下载python2.7.10并安装

    安装以后,修改环境变量,使用pip命令安装Django

    pip install django==1.8

    删除原来项目,重新创建Django项目

    django-admin startproject HelloWorld
    cd HelloWorld
    python manage.py startapp blog
    python manage.py runserver 8080

    页面开始访问:注意现在浏览器默认https://127.0.0.1:8080

    Django需要使用http://127.0.0.1:8080

    成功访问:

     另外:当初次使用post上传数据时:

    <form action="/userinfo/" method="post">
            <input name="name" type="text"/>
            <input name="age" type="text"/>
            <input type="submit">
        </form>

    后台:

    user=[]
    def userinfo(request):
        user1={}
        if request.method == "POST":
            user1['name']=request.POST.get("name",None)
            user1['age']=request.POST.get("age",None)
            user.append(user1)
        return render(request, "post1.html",{"user_list":user})

    有可能会出现下面情况:

    Forbidden (403)
    CSRF verification failed. Request aborted.
    You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties.

    是由于为了防止跨站请求伪造的原因,在settings文件中可以修改:

    MIDDLEWARE_CLASSES = (
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'django.middleware.security.SecurityMiddleware',
    )

    将绿色注释即可 


    将项目布置到服务器上后,我们需要去配置属性

    ALLOWED_HOSTS = ['*']  #设置允许所有的主机访问

    然后在启动项目时

    python manage.py runserver 0.0.0.0:8080  #也可以起到一样的效果

    注意:在客户机上访问时,此时可能不能被正确的访问,是因为我们的ip被防火墙过滤掉了。

    0.查看防火墙状态

    /etc/init.d/iptables status

    1.设置防火墙:

    [root@redhat2 crazyeye]# /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT  #允许8080端口数据访问
    [root@redhat2 crazyeye]# /etc/init.d/iptables save  #保存配置
    iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]

    2.临时关闭防火墙

    /etc/init.d/iptables stop 

    3.永久关闭,不随着我们下一次重启而启动

    chkconfig --level 35 iptables off
    chkconfig iptables off

    之后就可以正常的访问网站!!

    推文:redhat linux/CentOS 6/7 如何关闭防火墙?

  • 相关阅读:
    lua module
    lua require
    lua io
    lua table2
    lua table1
    【leetcode】魔术排列
    【leetcode】速算机器人
    【leetcode】黑白方格画
    【leetcode】根据数字二进制下 1 的数目排序
    【leetcode】插入区间
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8614037.html
Copyright © 2011-2022 走看看