用django创建一个简单的sns
1.首先创建一个工程newsns
django-admin.py startproject newsns
在工程目录下新建一个文件夹templates,在该文件夹下创建一个模版index.html:
<title>newsns -by django</title>
<h1><font color=#{{color}}>Django, my first django program.</font></h1>
参照上篇文章中创建模版的方法,将app目录下的settings.py文件、views.py文件和urls.py文件进行相应设置。
2.创建数据库,配置数据
在app目录下的settings.py中进行如下设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'newsns', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '***', #密码.
'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
增加app newsns:
1 INSTALLED_APPS = (
2 'django.contrib.auth',
3 'django.contrib.contenttypes',
4 'django.contrib.sessions',
5 'django.contrib.sites',
6 'django.contrib.messages',
7 'django.contrib.staticfiles',
8 # Uncomment the next line to enable the admin:
9 # 'django.contrib.admin',
10 # Uncomment the next line to enable admin documentation:
11 # 'django.contrib.admindocs',
12 'newsns',
13 )
在控制台中使用mysql命令创建数据库newsns
mysql> create database newsns default character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.03 sec)
然后在app目录下创建一个models.py文件,该文件创建了3个类,实际上每个类代表一个表格,类的字段为表的字段。
1 from django.db import models
2
3 class Publisher(models.Model):
4 name = models.CharField(max_length=30)
5 address = models.CharField(max_length=50)
6 city = models.CharField(max_length=60)
7 state_province = models.CharField(max_length=30)
8 country = models.CharField(max_length=50)
9 website = models.URLField()
10
11 class Author(models.Model):
12 first_name = models.CharField(max_length=30)
13 last_name = models.CharField(max_length=40)
14 email = models.EmailField()
15
16 class Book(models.Model):
17 title = models.CharField(max_length=100)
18 authors = models.ManyToManyField(Author)
19 publisher = models.ForeignKey(Publisher)
20 publication_date = models.DateField()
在控制台输入以下命令,按照要求输入帐号、密码,建立上述表格:
***@Android:~/newsns# python manage.py validate
0 errors found
***@Android:~/newsns# python manage.py syncdb
创建好表格后我们在manage.py shell中进行测试:
1 ***@Android:~/newsns# python manage.py shell
2 Python 2.7.3 (default, Aug 1 2012, 05:14:39)
3 Type "copyright", "credits" or "license" for more information.
4
5 IPython 0.13.1 -- An enhanced Interactive Python.
6 ? -> Introduction and overview of IPython's features.
7 %quickref -> Quick reference.
8 help -> Python's own help system.
9 object? -> Details about 'object', use 'object??' for extra details.
10
11 In [1]: from newsns.models import Publisher
12
13 In [2]: p = Publisher(name = 'Jim', city = 'beijing')
14
15 In [3]: p.save()
16
17 In [4]: l = Publisher.objects.all()
18
19 In [5]: for n in l:
20 ...: print n.name
21 ...:
22 Jim
好了,测试无误。