您的位置:首页 > 编程语言 > Go语言

(四)django视频笔记(配合第三篇一起食用,味道更佳哦)

2017-01-05 10:47 316 查看
视频地址网站(不错哦,可惜更新速度太慢,值得一看):http://www.fanhuaxiu.com/

七、django结合boostrap(即使用静态文件)(0+6步)

zero:利用搜索引擎下载boostrap模板,解压缩,里面有js,css,html,images等文件;

以下参考官方教程步骤:首页》How-to guides 》Managing static files (e.g. images, JavaScript, CSS)

https://docs.djangoproject.com/en/1.10/howto/static-files/

first:Make sure that django.contrib.staticfiles is included in your INSTALLED_APPS.

second:In your settings file, define STATIC_URL, for example:

In your settings file, define STATIC_URL, for example:

STATIC_URL = '/static/'


其实一二步可以不管,因为django自动做好了。

third(这一步可以暂时跳过,到最后再做):将下载好的html文件中的代码做如下修改:

#在最开头引入
{% load static %}
#所有资源文件src都要修改
<img src="{% static "my_app/example.jpg" %}" alt="My image"/>


PS:如果想让django不止在默认APP的static文件中寻找静态文件,可以这么做: you can define a list of directories (STATICFILES_DIRS) in your settings file where Django will also look for static files. For example:

STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
'/var/www/static/',
]


forth:在APP目录下,(django默认在APP目录下)新建一个static文件夹,把除了.html文件的所有静态文件都放入static中,把.html文件放入templates文件夹中;

fifth:在urls.py文件中添加以下代码:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)


sixth:可以考虑做第三步了,不过每个.html文件都要做第三步,太麻烦,做了很多重复的工作,所以考虑把基本模板抽离出来建成base.html,公共部分放在base.html中,然后使用继承模板的方式减少工作量;

base.html如下:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="{% static "my_app/style.css" %}" />
<title>{% block title %}My amazing site{% endblock %}</title>
</head>

<body>
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
{% endblock %}
</div>

<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>


其他继承base.html的文件:

{% extends "base.html" %}

{% block title %}My amazing blog{% endblock %}

{% block content %}
{% for entry in blog_entries %}
<h2>{{ entry.title }}</h2>
<p>{{ entry.body }}</p>
{% endfor %}
{% endblock %}


八,up主解答粉丝问题,没有实质内容跳过;

九、自定义用户user对象的数据模型建立

官方链接:Home》Common Web application tools》Authentication》Customizing authentication

大多数网站都要建立user对象,django提供了两种方法,第一种用django自带的user对象(字段较少),当然也可以在此基础上进行添加字段;第二种方法:完全DIY,想要多少字段就用多少字段;

第一种django自带(大概有十个字段基础上,自己再添加新的字段):

官网链接:Home》Common Web application tools》Authentication》 API Reference

first:model.py中建立user模型:

#注意继承的类为AbstractUser
from django.contrib.auth.models import AbstractUser
class MyUser(AbstractUser):

#自己添加的jifen字段
jifen=models.IntegerField('积分',default=0)
#以下为每个数据模型都有的
class Meta:
db_table='MyUser'#数据库表表名
def __str__(self):
return self.username #这里得返回字符串字段,不能用id,django规定


second:在settings.py中添加自定义的设置参数:

AUTH_USER_MODEL = 'myapp.MyUser'


third:更新数据库记录,同步数据库;

python manage.py makemigrations myapp
python manage.py migrate


此时就会发现MyUser表中除了django自带的10个字段还新增了jifen字段

第二种方法(完全DIY,包括用户认证等等)(三步):

first:model.py中建立user模型:

second:在settings.py中添加自定义的设置参数:

AUTH_USER_MODEL = 'myapp.MyUser'


from django.contrib.auth.models import AbstractBaseUser
class MyUser(AbstractBaseUser):
# 以下两个变量是必须提供
identifier = models.CharField(max_length=40, unique=True)
USERNAME_FIELD = 'identifier'
#自己添加的jifen字段
jifen=models.IntegerField('积分',default=0)
#以下为每个数据模型都有的
class Meta:
db_table='MyUser'#数据库表表名
def __str__(self):
return self.USERNAME_FIELD


second:在settings.py中添加自定义的设置参数:

AUTH_USER_MODEL = 'myapp.MyUser'


PS:注意自定义的user数据模型必须保证数据库中为空,即数据库中不能已经更新了django自带的user数据模型,这样会冲突,导致报错;所以:删除原来更新的数据库和数据库记录;重建一个全新的数据库;

third:更新数据库记录,同步数据库;

python manage.py makemigrations myapp
python manage.py migrate


PS:此时默认情况下MyUser表会有四个字段:id,password,last_login,identifier;之后你可以自己添加需要字段(第一步),再重复第三步即可,比如这里添加jifen=models.IntegerField(‘积分’,default=0)到第一步中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: