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

视频地址网站(不错哦,可惜更新速度太慢,值得一看):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)到第一步中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值