django2

url路由配置

1.在app里面新建urls.py

from django.conf.urls import url #从django配置路径 导入url
urlpatterns = [
url(r’^$’, views.index, name=‘index’),
]
2.在指向根URL配置app .urls模块,在主目录配置下
form django.conf.urls.include(),url
Urlpatterns = [
Url(r’^polls/’,include(‘polls.urls’)), 这里指向app路径下的urls,而app下的urls 指向的是views 形成二级路由
]

模型基本配置
数据库设置:打开project /setting.py 。这是一个普通的模块,代表django的设置变量。
默认情况下,配置使用SQLite。如果想使用其他的数据库:
安装相应的数据库绑定并更改一下键项;

DATABASES’default’
ENGINE 要么’django.db.backends.sqlite3’ ‘django.db.backends.postgresql’ ‘django.db.backends.mysql’

NAME 是数据库名字,例如sqlite,name应该是完整的绝对路径:
Os.path.join(BASE_DIR,’db.sqlite3’)如果不是使用的sqlite3,那么需要配置user,password等相关信息。
如果是使用的sqlite数据库,这里不需要创建任何文件,在需要的时候它会自动创建。
如果是使用的其他数据库,在配置好时,需要测试是否允许创建数据库权限。
顺便可以在settings.py 中把TIME_ZONE 设置本地时区。

此外:INSTALLED_APPS 在文件中的最上面的设置。持有的该django的情况下激活的所有django的应用程序的名称。
Django.contrib.admin - 管理员站点
Django.contrib.auth - 一个认证系统
Django.contrib.contenttypes - 用于内容类型的框架
Django.contrib.sessions - 一个会话框架
Django.contrib.messages - 一个消息框架
Django.contrib.staticfiles - 一个用于管理静态文件的框架
这些应用程序中的使用至少一个数据库表,我们在数据库中创建表之前,我们可以使用他们,在此之前,我们需要运行一下命令:
Python mange.py migrate
migrate 命令会在INSTALLED_APPS 设置和创建根据数据库设置任何必要的数据表 project/settings.py 文件,并随应用程序的数据库迁移
创建模型:
编辑app/models.py
一般创建两个模式:Question 和Choice 一个question有一个问题和出版日期
一个Choice有两个字段:选择的文本和投票统计。每一个选择都是相关联的一个问题。

from django.db import models
class Question(models.Model):
Quertion_text = models.CharFiele(max_length = 200)
Pub_data = models.DateTimeField(‘date published’)
class Choice(models.model):
Question = models.ForeignKey(Question,on_delete = models.CASCADE)
choice_text = models.CharField(max_length = 200)
Votes = models.IntegerField(defaule = 0)
每一个模型由子类的一个类代表django.db.models.Model 每一个模型具有多个类的变量,其中每一个表示在模型数据库字段的
每一个字由一个实例 field 类表示,CharField 字符字段和DateTimeFiele用于日期时间,这告诉django 每个字段的数据类型
每个Field 实例的名称,可以使用这个值在python代码中,和数据库将使用它作为列名
有些Field 类有必须的参数。如 CharField ,需要给一个max_length . 这不仅实适用于数据库模式,但在验证,我们很快会看到。
一个Field也可以有不同的可选参数,在这种情况下 我们设置 default或 votes = 0
最后,使用ForeignKey 注意定义的关系,告诉django 每个相关的选择是一个问题,django支持所有的常见的数据库关系:多对多,一对一
激活模型
那个小一点的模型代码给出了Django的很多信息。有了它,Django能够:
创建一个数据库模式(为这个应用程序语句)CREATE TABLE
创建访问一个python数据库访问API Question 和Choice对象
但首先我们需要告诉我们的项目,项目的app 应用配置
要在我们的项目中应用,我们需要添加一个引用其配置类的应用程序设置。在polls.apps.PollsConfig 编辑 app//settings.py:
INSTALLED_APPS = [
‘polls.apps.PollsConfig’,
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
]

让django知道了polls 应用,我们运行:

Python mange.py makeigrations polls

会看到以下:
Migrations for 'polls':

polls/migrations/0001_initial.py:
- Create model Choice
- Create model Question
- Add field question to choice

  • 配置model 模型

App/model.py 

From django.db import models
Class Category(models.Model):
	Name = models.CharField(max_length = 100)

这是一个标准的python类,我们继承了models.Model类 类名为Category(分类),这个类具有一个属性name ,它是models.CharField 的一个实例,这样django就可以吧这个类翻译成数据库的鳄鱼发,在数据库里创建一个名为Category的表格,这个表格的一个列明为name ,还有一个列id 会自动帮我们创建。其规则就是一个python类对应一个数据库表格,类名即表明,类的属性对应着表格的列,属性名即列名。

django要求我们必须继承models.Model 类,
	Caregory 只需要创建一个简单的分类名name就可以了
	CharField 指定了name的数据类型。
	CharField 是字符型!
	max_length 是制定最大长度,CharField 中这个max_length 是必填属性,当然django还有各种各样的类型,如时间 DateTimeField 、整数 InttegerField 等……


数据表关联:
		多对一关系: 使用django.db.models.ForeignKey.

例如:一个手机只能属于一个人,但是一个人可以有很多个手机
参数:ForeignKey 需要一个位置参数:模型相关的类
如:

From django.db import models 
#先定义一个类,继承至模型
class new_ForeignKey(models.Model):
Pass...

class car(models.Model):
Name = models.ForeignKey(new_ForeignKty);
多对多关系: 使用django.db.models.ManyToManyField.
比如:一个人有很多的爱好,这个爱好也有很多人有。
from django.db import models
class Hobby(models.Model):
Pass..
class Person (models.Model):
#这个人具有很多的爱好
hob = models.ManyToManyField(Hobby)

读取sqlite 数据

1.views.py import models
2.Article = models.Article.object.get(id= 1)   取第一条id的数据
3.Render(request,page,{‘from’:atticle})  需要穿什么数据自行传送
Admin
Admin是django自带的自动化数据管理界面
配置admin
Django已经自动创建好了admin,我们只需要创建
Python manage.py createsuperuser  
输入电子邮箱
输入密码
重复密码
然后就可以在环境里面的admin界面里面登录了
修改admin界面为中文:settings.py  LANGUAGE_CODE = ‘ZH_Hans’
然后在admin.py import model或者(里面的模型)
编辑 admin.site.register(Models.Article)

修改数据,在admin界面修改

修改数据默认显示名称
在models下表实例添加一个方法

根据版本选择 _str_(self): return self.title 或者 _unicode_(self):return self.title


{% xx in arr %}
<li>{{xx.title}}</li>
{% endfor %} 
配置子页面:
Views 添加子页面处理函数
def ziyemian(request,blog_id):
Article = models.Blogmain.objects.get(pk=blog_id)
Return render(request,’blog.html’,article)
Urls 添加url配置 url(r’^blog/(?P<article_id>[0-9]+)$’,view.ziyemian)
然后地址栏http://127.0.0.1/8000/blog/1  就可以请求到数据表文章id是1的数据了

超链接配置
Url 模板 {%	url ‘app_name:url_name’  param	%}  
app_name:appname:  都在url中配置
两种方式
1根urls ,include()的第二个参数,namaspace = ‘blog’
根目录下 includ的第二个参数  namespace = ‘blog’

2 应用下写在url()的第三个参数位置 name = ‘article’ 
在url的第三个参数 name = ‘page’
主要取决于是否使用了include 配置另外一个urls配置
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值