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

成功访问:

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

 另外:当初次使用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 如何关闭防火墙?