Ubuntu系统下的Django环境搭建

Ubuntu系统下Django框架的环境搭建

此文章针对于新手,和第一次的搭建。


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


首先你得了解数据库的简单操作(增删改查)以及Python的基础,

至于不懂呢,也没关系啊,接着往下看就好了

(这里我选择的是django1.11.8版本,mysql数据库以及PyCharm软件)

Ubuntu下创建Pycharm快捷方式


此文章并不是Django的教程,也不会教你使用django的详细操作,

仅仅只是最基本的环境的搭建而已。


基础差一点的会碰到很多问题,例如数据库编码的问题,或者django的报错信息。

我会把我搭建环境时,碰到的问题,在过程中会讲解,其他没碰到的问题,那我也

就没法指出了。


那么就开始吧!



一、第一步,安装Django框架,MySQL数据库,以及问题解决

(1)因为我的ubuntu版本是18.04.15.0-20-generic

        有两个版本的Python,2.7和3.5,默认是python2.7,所以安装时记得带上3

   

    (3)终端下输入:sudo apt-get install python3-django

          或者:pip3 install django=1.11.8   (pip3代表的是Python3版本,pip就是2)

   

    (4)数据库安装:sudo apt-get install mysql   直接下载最新版即可   

   

    (5)或者 sudo apt-get install mysql=version  下载指定版本



二、第二步,创建MySQL数据库,以及问题解决

(1)输入mysql -u root -p ,然后输入密码就进入数据库。


(2)输入create database  数据库名 character set utf8 ;创建数据库并指定编码。


注意:如果你不指定编码,那么你的数据库存汉字的时候,会报错,或者乱码

特别是新创建的数据库,在学习django的时候跟数据库打交道时必不可少的,

那么就会出现很多问题,最头痛的就是编码问题,如果想一劳永逸,就点击这里

Ubuntu下Mysql数据库编码设置


问题解决:

1,这里,第一次安装的数据库的密码是你安装时输入的,如果安装没有提示输入密码,root默认的密码就是空,如果输入了空密码也进不去,那么请看Ubuntu下安装MySQL后密码忘记解决方案,


2,有一种情况,如果你mysql -u root -p输入密码后出现:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'       密码明明是对的,却还是进不去数据库。

但是你在前面加上个sudo就能进去了,这就是没有权限的原因,后面django的时候

就需要远程到mysql,如果不解决就会报错,我的解决方法就是重新创建一个数据库

create user '用户名'@'localhost' identified by'密码';,如果出现其他问题,请自行百度吧。



三、第三步,生成django文件

(1)在你所要工作的空目录下输入(我的工作目录叫webframe):

            django-admin startproject project     这里我们的项目名称叫做      project     

这一步,我就报错了找不到django-admin这条命令。解决:解决找不到django-admin这条命令解决方案

(2)打开Pycharm软件,选择好你的工作目录webframe

,并点击创建。注意你Python3版本的路径。否则会出问题的,

我的路径是:/var/bin/python3.x



四、第四步,连接MySQL数据库

(1)打开project/project/settings.py,修改DATABASE为:

DATABASES = {
    'default': {                              
        'ENGINE': 'django.db.backends.mysql',     #MySQL数据库
        'NAME': 'login',                          #数据库名称
        'USER': 'root',                           #数据库用户
        'PASSWORD': '123456',                     #数据库密码
        'HOST': 'localhost',                      #代表本机也可以127.0.0.1
        'PORT': '3306'                            #默认端口号3306         
    }
}

注意:如果你的数据库账号信息填写错误,或者,没有权限访问

在后面对数据库进行操作时,会报错的


(2)打开project/project/__init__.py文件,添加内容:

import pymysql

pymysql.isntall_as_MySQLdb()


(3)在project/创建应用myApp文件

python3 manage.py startapp myApp          这里应用文件名就叫myApp。


(4)在project/project/settings.py下激活应用

将myApp添加到INSTALLED_APPS的最后一条

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myApp'
]



五、第五步,定义模型project/myApp/models.py下操作(和数据库交互)

class Grades(models.Model):
    gname = models.CharField(max_length=20)    #最大长度为20字节
    gdate = models.DateTimeField()             #时间类型
    ggirlnum = models.IntegerField()           #整数类型
    gboynum = models.IntegerField()            #整数类型
    isDelete = models.BooleanField(default=False)#布尔值,Ture,False,默认False


class Students(models.Model):
    sname = models.CharField(max_length=20)
    sgender = models.BooleanField(default=True)
    sage = models.IntegerField()
    scontend = models.CharField(max_length=20)
    isDelete = models.BooleanField(default=False)
    sgrade = models.ForeignKey('Grades')     #关联外键 

详细参数及选项查看django的models选项及参数


六、第六步

1,在数据库中生成数据表

(1)生成迁移文件,在project下输入:

            python3 manage.py makemigrations

(2)执行迁移,

            python3 manage.py migrate


2,数据库模式下查看数据表,表单

        use 数据库名                         #对数据库进行操作
        show tables;                        #查看数据库里的内容
        desc myApp_grades                   #查看表单(实际名按照tables里的名字)
        desc myApp_students                 #查看表单实际名按照tables里的名字)


七、第七步,做数据测试

1.进入交互式环境终端project/下输入
            python3 manage.py shell
        
        2.导入一些模块
            from myApp.models import Grades,Students
            from django.utils import timezone
            from datetime import *
        
        3.在模型里操作的一些功能命令
            数据库下操作命令:(所有命令只是在当前搭建的环境生效)
                use sunck                                   #进入sunck数据库
                select * from myApp_students;               #查看班级信息
                select * from myApp_grades;                 #查看学生信息
                
            在模型里操作命令:
            增:
                grade = Grades()                            #创建一个班级空类
                grade.gname = '网44班'                      #创建一个班叫网44班
                grade.gdate = datetime(year=2018,month=4,day=30)#班级创建的时间
                grade.ggirlnum = 1                          #班级女生数量
                grade.gboynum = 29                          #班级男生数量
                grade.save()                                #保存到数据库,如果不save将没有储存
                student = Students()                        #创建一个学生空类
                student.sname = '赵铁柱'                    #创建一个学生叫赵铁柱
                student.sgender = 1                         #0女,1男,默认男,所以可以不写
                student.sage = 18                           #赵铁柱的年龄
                student.scontend = '我叫赵铁柱'             #赵铁柱的简介
                student.sgrade = grade                      #赵铁柱在网44班
                student.save()                              #保存到数据库
            删:
                grade.delete()                              #这条数据直接被删除(物理删除)
            改:
                grade.gname = '网11班'                      #直接换成新值就能修改
                grade.ggirlnum = 15                         #直接换成新值就能修改
            查:
                Grades.objects.all()                        #查看Grades表里的所有数据
                Grades.objects.get(id=1)                    #查看id为1的数据
                grade.students_set.all()                    #查看班级下的所有学生

注意:如果你没有做之前对数据库做配置的操作,你这里save的时候肯定会出编码问题的报错的,再或者是你在shell里粗心,xx.gname = 'xx'写错了,这里的grade.gname等等都是你在定义模型时定义的东西。


八、第八步,启动服务,终端下操作

 启动服务器,在project下操作(注意:数据库必须启动)

        python3 manage.py runserver ip:port                 #IP如果不写,默认本机ip,默认8000端口

注意:这个只是一个轻量级的服务

打开浏览器输入127.0.0.1:8000,如果出现

正常工作了!
祝贺你的第一个由Django驱动的页面。

接下来运行你的第一个程序 python manage.py startapp [app_label].

您看到此消息是由于Django的配置文件设置了 DEBUG = True,您还没有配置任何路由URL。开始工作吧。

*汉化,china时间,在setting.py做下面,做修改
        LANGUAGE_CODE = 'zh-Hans'
        TIME_ZONE = 'Asia/Shanghai'

那么就表示你的环境搭建没有问题。


九、第九步,启动站点管理

(1)在setting.py里的INSTALLED-APPSz中添加内容

 'django.contrib.admin'                              #一般都默认添加了


(2)创建站点管理员,在终端上输入:

python3 manage.py createsuperuser        #依次输入用户名,邮箱,密码



十、第十步,站点部署,管理数据表

admin.py文件下的所有代码

from django.contrib import admin

# Register your models here.
from .models import Grades,Students

class StudentInfo(admin.TabularInline):
    model = Students  #使用students
    extra = 3         #设定每创建一个班级时,附带创建3个学生  

@admin.register(Grades)      #注册
class GradesAdmin(admin.ModelAdmin):#班级
    def pk(self):                  #编号
        return self.pk         
    def name(self): 
        return self.gname
    def girlnum(self):
        return self.ggirlnum
    def boynum(self):
        return self.gboynum
    def isdelete(self):
        if self.isDelete:
            return '是'
        else:
            return '否'
    pk.short_description = '编号'          #设置标签,站点上显示的就不是pk,name,等等,而是中文的显示,
    name.short_description = '姓名'
    girlnum.short_description = '女生'
    boynum.short_description = '男生'
    isdelete.short_description = '毕业'

    inlines = [StudentInfo]   #创建班级是,顺带添加仨学生
    #列表页属性
    list_display = [pk,name,girlnum,boynum,isdelete]#显示字段,分好类方便查看,注意加了标签就不能排序了
    list_filter = ['gname']  #过滤器,数据量比较多,以条件来过滤数据
    search_fields = ['gname']#搜索器,以条件来搜索数据
    list_per_page = 10       #分页,设置x条数据为一页

    #添加,修改页属性
    #fields = ['gname','gboynum','ggirlnum','gdate','isDelete']#设置添加页顺序
    fieldsets = [
        ('人数',{'fields':['ggirlnum','gboynum']}),
        ('班级',{'fields':['gname','gdate','isDelete']})
    ] #给属性分组,但是不能与fields同时使用


@admin.register(Students)           #注册
class StudentsAdmin(admin.ModelAdmin):#学生
    #设置显示的内容(主要拿来汉化)
    def gender(self):
        if self.sgender:
            return "男"
        else:
            return "女"
    def pk(self):
        return self.pk
    def name(self):
        return self.sname
    def age(self):
        return self.sage
    def contend(self):
        return self.scontend
    def grade(self):
        return self.sgrade
    def isdelete(self):
        if self.isDelete:
            return '是'
        else:
            return '否'
    #设置页面列的名称
    gender.short_description = '性别'
    pk.short_description = '编号'
    name.short_description = '名字'
    age.short_description = '年龄'
    contend.short_description = '简介'
    grade.short_description = '班级'
    isdelete.short_description = '毕业'

    list_display = [pk,name,gender,age,contend,grade,isdelete]
    list_per_page = 10
    search_fields = ['sname']
    list_filter = ['sgrade']

十一、十一步,登入站点查看信息

打开浏览器,输入127.0.0.1:8000/admin,输入创建的管理员账号密码登入,

所有数据的操作都可以在此,是不是很方便呢,


十二、创建模板,

           (1) 创建模板,树状为project/templates/myApp

                        在project下创建templates,在templates下创建myApp

           (2) 配置模板路径
           在setting.py的TEMPLATES里写入'DIRS': [os.path.join(BASE_DIR,'templates')],


十三、创建静态文件夹

如果不做这一步,那么你所设置的css,js,img都不会被使用


    (1)创建css,js,img文件,树状为project/static
        在project下创建static再在static/创建css,js,img
    (2)在settings.py最后一行添加
        HERE = os.path.dirname(os.path.abspath(__file__))
        HERE = os.path.join(HERE, '../')
        STATICFILES_DIRS = (
        os.path.join(HERE, 'static/'),

)


django环境搭建的后续操作(小扩展)

第1步:
    *在settings.py文件下添加,即可局域网访问
        ALLOWED_HOSTS = ['*',]


第2步:

    *创建模板文件
    在templates/myApp/创建xxx.html即可


第3步:

    *定义视图,views.py里创建视图,代码如下:
        from django.http import HttpResponse
        def index(request):
            return HttpResponse("欢迎来到某某网")


第4步:

    *配置url,在project/urls.py加入:
        from django.conf.urls import url,include
        from django.contrib import admin
            urlpatterns = [
                url(r'^admin/', admin.site.urls),
                url(r'^', include('myApp.urls'))
            ]
    
    *在myApp下创建urls.py,并写入:
        from django.conf.urls import url
        from . import views
            urlpatterns = [
                url(r'^$', views.index)


在浏览器上输入127.0.0.1:8000即可看到欢迎来到某某网。


好了,简单的django的环境搭建完成了,介于我也只是个小菜鸟,有错误的地方请指出来。

猜你喜欢

转载自blog.csdn.net/weixin_41768978/article/details/80208487