Python-用户账户与应用步调样式

打印 上一主题 下一主题

主题 1818|帖子 1818|积分 5454

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第十九章 用户账户与数据管理  
19.1 用户输入数据处理  
19.1.1 添加新主题  
操纵步调:  
1. 在models.py中定义Topic模型(需关联用户):  
  1. from django.contrib.auth.models import User  
  2. class Topic(models.Model):  
  3.     owner = models.ForeignKey(User, on_delete=models.CASCADE)  
  4.     text = models.CharField(max_length=200)  
  5.     date_added = models.DateTimeField(auto_now_add=True)  
复制代码
语法阐明:  
- ForeignKey建立用户与主题的一对多关系  
- on_delete=models.CASCADE表示用户删除时级联删除关联数据  

2. 在视图函数中限定访问:  
  1. from django.contrib.auth.decorators import login_required  
  2. @login_required  
  3. def new_topic(request):  
  4.     if request.method == 'POST':  
  5.         form = TopicForm(request.POST)  
  6.         if form.is_valid():  
  7.             new_topic = form.save(commit=False)  
  8.             new_topic.owner = request.user # 关联当前用户  
  9.             new_topic.save()  
  10.             return redirect('learning_logs:index')  
  11.     else:  
  12.         form = TopicForm()  
  13.     return render(request, 'new_topic.html', {'form': form})  
复制代码
用法解析:  
- @login_required装饰器限定未登录用户访问  
- commit=False暂不提交数据库,允许添加额外字段  

19.2 创建用户认证系统  
19.2.1 创建users应用  
执行命令:  
  1. python manage.py startapp users  
复制代码

19.2.2 配置settings.py  
在INSTALLED_APPS添加:  
  1. 'users.apps.UsersConfig'  
复制代码

在文件末尾添加:  
LOGIN_URL = 'users:login' # 指定登录页面路径  

19.2.3 用户登录实现  
登录视图示例:  
  1. from django.contrib.auth import authenticate, login  
  2. def user_login(request):  
  3.     if request.method == 'POST':  
  4.         username = request.POST['username']  
  5.         password = request.POST['password']  
  6.         user = authenticate(request, username=username, password=password)  
  7.         if user is not None:  
  8.             login(request, user)  
  9.             return redirect('learning_logs:index')  
  10.         else:  
  11.             return HttpResponse('Invalid login')  
  12.     return render(request, 'registration/login.html')  
复制代码
核心方法阐明:  
- authenticate()验证用户凭据  
- login()创建用户会话  

19.3 数据权限控制  
19.3.1 查询过滤  
在视图中限定数据访问:  
  1. def topic(request, topic_id):  
  2.     topic = Topic.objects.get(id=topic_id)  
  3.     if topic.owner != request.user:  
  4.         raise Http404 # 非所有者触发404错误  
  5.     entries = topic.entry_set.order_by('-date_added')  
  6.     return render(request, 'topic.html', {'topic':topic, 'entries':entries})  
复制代码
第二十章 样式设置与部署  
20.1 使用Bootstrap美化界面  
20.1.1 安装django-bootstrap4  
执行:  
  1. pip install django-bootstrap4  
复制代码

配置settings.py:  
  1. INSTALLED_APPS += ['bootstrap4']  
复制代码

20.1.2 修改base模板  
在templates/base.html中添加:  
  1. {% load bootstrap4 %}  
  2. <head>  
  3.     {% bootstrap_css %}  
  4.     {% bootstrap_javascript jquery='full' %}  
  5. </head>  
  6. <body>  
  7.     <nav class="navbar navbar-expand-lg navbar-light bg-light">  
  8.         <!-- 导航栏内容 -->  
  9.     </nav>  
  10.     <div class="container">  
  11.         {% block content %}{% endblock %}  
  12.     </div>  
  13. </body>  
复制代码
功能阐明:  
- bootstrap4模板标签自动加载静态资源  
- container类实现相应式结构  

20.2 部署到Heroku  
20.2.1 预备部署文件  
创建Procfile(无扩展名):  
web: gunicorn learning_log.wsgi --log-file -  

创建requirements.txt:  
pip freeze > requirements.txt  

20.2.2 修改settings.py  
添加配置:  
  1. import django_heroku  
  2. DEBUG = False  
  3. ALLOWED_HOSTS = ['learning-log.herokuapp.com']  
  4. django_heroku.settings(locals())  
复制代码
关键参数阐明:  
- DEBUG=False关闭调试模式  
- django_heroku自动配置数据库等情况变量  

20.2.3 Heroku命令行操纵  
1. 登录Heroku:  
heroku login  

2. 创建应用:  
heroku create learning-log  

3. 设置情况变量:  
heroku config:set SECRET_KEY='your_secret_key_123'  

4. 部署代码:  
git push heroku main  

5. 迁移数据库:  
heroku run python manage.py migrate  

20.3 安全强化步调  
20.3.1 密钥保护  
在情况变量中设置SECRET_KEY:  
  1. import os  
  2. SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')  
复制代码
20.3.2 HTTPS配置  
在settings.py中强制HTTPS:  
  1. SECURE_SSL_REDIRECT = True  
  2. SESSION_COOKIE_SECURE = True  
  3. CSRF_COOKIE_SECURE = True  
复制代码
关键流程总结:  
1. 用户系统实现流程:  
   创建应用 -> 定义模型 -> 编写认证视图 -> 配置URL -> 模板集成  

2. 部署流程:  
   安装依赖 -> 配置适配文件 -> Heroku CLI操纵 -> 数据库迁移 -> 安全设置  

常见问题处理:  
- 部署后静态文件丢失:需配置whitenoise中间件  
- Heroku数据库连接失败:检查DATABASE_URL情况变量  
- 模板继续失效:确保模板目录在settings.py的TEMPLATES中正确定义

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表