创建一个初级的Django项目最主要的代码是在models.py文件和views.py文件中操作的
models.py一般写的是用来创建数据库表的类
例如
class BookInfo(models.Model):
# 图书名
bookname = models.CharField(max_length=30,verbose_name='书籍名称')
# 出版时间
publictime = models.DateField(verbose_name='出版时间',null=True)
'''
auto_now=False, 表示每次保存对象,自动设置该字段为当前时间,用于做最后一次修改的时间戳
uto_now_add=False:表示当前对象第一次被创建时自动设置当前时间,用于创建的时间戳
当前两个参数是相互排斥的
'''
# 阅读量
count = models.IntegerField(verbose_name='阅读量', default=0)
# 销量
seltcount = models.IntegerField(verbose_name='销量', default=0)
# 逻辑删除
is_delete = models.BooleanField(verbose_name='逻辑删除', default=False)
# 制定数据库的表名
class Meta:
# 制定数据库表名
db_table = 'bookinfo'
# 修改后台管理站点中数据库的名字
verbose_name = '书籍'
# 去除后台管理名字中的s
verbose_name_plural = verbose_name
def __str__(self):
return self.bookname
1.这个类包括了数据库表所必要的元素,如BookInfo类要有书名,出版社等等
2.Meta这个类是是来改变数据库表的一些元素,如表名改为bookinfo,不写的话是默认的表名一般是:模块名_类名
3.str魔法方法是自动调用,return用来返回你所希望返回的值
views.py一般是写方法用来连接html文件或者css等,然后通过它使我数据库的信息通过html来展示在网页中
例如:
def index(request):
# render(request, template_name, context=None, content_type=None, status=None, using=None)
return render(request,'index.html',{'test':'这是测试文本'})
1.request是一个参数
2.render:Returns a HttpResponse 是返回一个http相应体
3.index.html是一个自己写的html文件
4.{‘test’:‘这是测试文本’}:可写可不写,在html文件的body中写{{test}}
即可在页面中显示:这是测试文本这几个字
在项目的setting文件中需要改的内容
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#古老版本
#'user'
#1.10后的版本
'user.apps.UserConfig',
]
注释后面的是自己加的,格式是 :
模块名.apps.apps文件下的类名(自动生成的)
2.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
#设置模板的查找路径
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
DIRS需要改,原本是[],templates是自己在项目下创建的包名,此包用来写html页面
3.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '自己创建的数据库的名字', #是指数据库的名字
'USER': 'root', #mysql的用户名
'PASSWORD': '自己数据库的密码', #mysql的密码
'HOST': '127.0.0.1', #mysql的地址
'PORT': 3306, #mysql的端口
}
}
这个是用来连接自己的数据库,默认是项目自带的db.sqlite3
urls.py文件中加路径
from 模块名 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/$',views.方法名),
]
- r’^index/$'是指:以index开头以/结尾,r是转义,防止单引号里面有特殊意义的字符导致路径解析错误
127.0.0.1:8000/index/ #127.0.0.1是本地地址,8000是默认端口
以上的 r’^index/$'就是指网页上以index/结尾
在admin.py文件中注册自己在models.py中写的类
from 模块名.models import 类名
# Register your models here.
admin.site.register(类名)
运行服务器
python manage.py runserver 8888
#8888是自己指定的端口,不填就默认
数据库表生成后一定要迁移数据库
1.生成迁移文件
python manage.py makemigrations
2.执行迁移文件
python manage.py migrate
迁移成功并且执行迁移之后,才能真正在数据库产生表