python django web项目的构建步骤(一)

news/2024/7/7 18:44:38

Django

一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。

1、安装好python django(这步略过,安装过程自行完成,网上安装步骤很多),安装的版本不同而生成的文件目录也不同,这里用的是1.6.5的版本的django;

1
2
[root@node3 ~]# django-admin.py --version
1.6.5

2、创建django项目

1
2
3
4
5
6
[root@node3 python]# django-admin.py startproject mysite2
[root@node3 python]# cd mysite2/
[root@node3 mysite2]# ll
total 8
-rwxr-xr-x. 1 root root  250 Jun  9 22:20 manage.py
drwxr-xr-x. 2 root root 4096 Jun  9 22:20 mysite2

以上的是1.6.5版本生成的一个manage.py和一个目录mysite2,如是1.3.7的版本的话生成的是以下的格式:

1
2
3
4
5
6
7
[root@node1 python]# cd mysite2/
[root@node1 mysite2]# ll
total 16
-rw-r--r--. 1 root root    0 Jun 10 10:19 __init__.py
-rw-r--r--. 1 root root  503 Jun 10 10:19 manage.py
-rw-r--r--. 1 root root 5203 Jun 10 10:19 settings.py
-rw-r--r--. 1 root root  568 Jun 10 10:19 urls.py

3、这里我们还是以1.6.5的版本为例说明问题,如果我们需要连接数据库,那我们需要去修改mysite2文件夹里的settings.py文件;

1
2
3
4
5
6
7
8
9
10
11
12
DATABASES = {
      'default': {
          'ENGINE''django.db.backends.mysql',  # 需要连接什么数据库
          'NAME''mysite2'# 需要连接的数据库名
          'USERNAME''root',    # 连接数据库的用户名
          'PASSWORD''linux',   # 连接数据库的密码
          'PORT''3306',        # 端口
      }
 }
我们还可以改一下时区和使用的语言
LANGUAGE_CODE = 'en-zh'   # 中文
TIME_ZONE = 'Asia/Shanghai'   # 亚洲,上海

4、之后就可以启动django了,切换到manage.py目录文件下,如不写0.0.0.0:8000(监听所有地址),那默认是监听127.0.0.1:8000这个套接字;

1
[root@node3 mysite2]# python manage.py runserver 0.0.0.0:8000

5、然后就可以在页面上访问了,用本机的地址加端口就可以访问:

1
http://10.17.1.151:8000/

wKioL1V37bySBlcSAAFK4H3r4GY139.jpg

################  以下是新建一个APP的简单设置步骤  ############

1、使用manage.py创建一个APP;

1
2
3
4
5
6
[root@node3 mysite2]# python manage.py startapp myapp
[root@node3 mysite2]# ll
total 12
-rwxr-xr-x. 1 root root  250 Jun  9 22:20 manage.py
drwxr-xr-x. 2 root root 4096 Jun 10 01:47 myapp
drwxr-xr-x. 2 root root 4096 Jun  9 23:29 mysite2

2、为了使 Django 认识到新应用程序的存在,还需要向 settings.py 文件中的 INSTALLED_APPS 添加一个条目。

1
2
3
4
5
6
7
8
9
INSTALLED_APPS = (
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'myapp',  添加新建的app
 )

3、切换到myapp中,创建一个模型,也就是在moduls.py文件中新建一个类,做个类代表对应数据库中的一张表;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@node3 myapp]# vim models.py
from django.db import models
class Teacher(models.Model):
    name = models.CharField(max_length=30)
    gender = models.CharField(max_length=5)
    age = models.CharField(max_length=5)
    job = models.CharField(max_length=50)
    def __unicode__(self):
        return "%s, %s, %s, %s" % (self.name, self.gender, self.age, self.job)
class Student(models.Model):
    name = models.CharField(max_length=30)
    gender = models.CharField(max_length=5)
    age = models.CharField(max_length=5)
    course = models.CharField(max_length=50)
    def __unicode__(self):
        return "%s, %s, %s, %s" % (self.name, self.gender, self.age, self.course)

##  创建完所需要的表之后就可以使用下面命令进行数据库的同步了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@node3 mysite2]# python manage.py syncdb
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table myapp_teacher
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'): # admin的用户帐号
Email address: abc@test.com
Password: # 这个设置是登录admin是的登录密码
Password (again): 
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

##  登录mysql数据库就可以查看到生成的表了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
MariaDB [(none)]> use mysite2;
Database changed
MariaDB [mysite2]> show tables;
+----------------------------+
| Tables_in_mysite2          |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_session             |
| myapp_student              |   # 下面这两个是我们需创建的表student和teacher
| myapp_teacher              |
+----------------------------+
11 rows in set (0.00 sec)
MariaDB [mysite2]> desc myapp_student;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| name   | varchar(30) | NO   |     | NULL    |                |
| gender | varchar(5)  | NO   |     | NULL    |                |
| age    | varchar(5)  | NO   |     | NULL    |                |
| course | varchar(50) | NO   |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+
5 rows in set (0.10 sec)
MariaDB [mysite2]> desc myapp_teacher;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| name   | varchar(30) | NO   |     | NULL    |                |
| gender | varchar(5)  | NO   |     | NULL    |                |
| age    | varchar(5)  | NO   |     | NULL    |                |
| job    | varchar(50) | NO   |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

4、到这里我们可以通过django的admin管理界面来添加,删除,修改表中的信息,即在myapp目录中的admin.py添加一个class类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@node3 myapp]# vim admin.py
from myapp.models import Student, Teacher
class TeacherAdmin(admin.ModelAdmin):
    list_display = (
        'name',
        'gender',
        'age',
        'job',
    )
class StudentAdmin(admin.ModelAdmin):
    list_display = (
        'name',
        'gender',
        'age',
        'course',
    )
admin.site.register(Student, StudentAdmin)
admin.site.register(Teacher, TeacherAdmin)

这个保存之后就可以在地址栏中输入http://10.17.1.151:8000/admin来访问到了,在这里就直接可以操作数据库表。

wKiom1V37R_DvAdBAAEkpLVSCdw452.jpgwKioL1V37xmC_TGgAAJcpReuEH4566.jpgwKioL1V37yzRew6xAAFZUWQTDx4261.jpg










本文转自 wei0164 51CTO博客,原文链接:http://blog.51cto.com/tanxw/1660453,如需转载请自行联系原作者

http://lihuaxi.xjx100.cn/news/276679.html

相关文章

导出表结构

http://wenku.baidu.com/view/979d6e3fee06eff9aef80766.html 选择: list of tables list of table columns 指定layout name data type length comment转载于:https://www.cnblogs.com/gaohuag/p/3304874.html

mysql random_Mysql中随机函数笔记

1,测试表结构:mysql> desc test_user;----------------------------------------------------------| Field | Type | Null | Key | Default | Extra |----------------------------------------------------------| id | int(11) | NO | PRI | NULL …

pythonrequest方法_解决Python requests 报错方法集锦

python版本和ssl版本都会导致 requests在请求https网站时候会出一些错误,最好使用新版本。 1 Python2.6x use requests 一台老Centos机器上跑着古老的应用,加了一个新模块之后报错 报错 InsecurePlatformWarning: A true SSLContext object is not avail…

科普:教你如何看懂 JavaGC 日志

点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试资料来源:https://url.cn/5cvXPfUJVM GC 相关的参数-XX:PrintGC 输出 GC 日志 -XX:PrintGCDetails 输出 GC 的详细日志 -XX:PrintGCTimeStamps 输出 GC 的时间戳(以基准时间的…

卡尔曼滤波:究竟滤了谁?

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达本文转自|AI算法与图像处理在SLAM系统中,后端优化部分有两大流派。一派是基于马尔科夫性假设的滤波器方法,认为当前时刻的状态只与上一时刻的状态有…

不到顶会现场也能听论文讲解?这个视频集合网站值得收藏

BDTC大会官网:https://t.csdnimg.cn/q4TY作者 | 刘畅出品 | AI科技大本营(ID:rgznai1000)最近跟身边的硕士生、博士生聊天,发现有一个共同话题,大家都想要知道哪款产品能防止掉头发?养发育发已经成了茶余饭…

网络安全系列之七 网站提权

上传了webshell之后,我们的目的是获取服务器的系统管理员权限,这也是黑客入侵的最终目的。 “H4ck Door”是一个很牛的大马,提供了很多功能,我比较喜欢的是执行cmd命令来提权。 首先执行“net user”命令查看服务器有哪些用户&…

写的函数符号表里没有_你有没有想过,C语言 main 函数到底为啥这么写?

但凡是学过C语言的人,都知道要先写main函数,然而很多时候我们看到的main函数却各有差异,这究竟是为啥?哪种是对的呢?今天我们就来聊聊main函数。那么main函数一共有多少个版本呢?1、main(&#…