欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > Python-用户账户与应用程序样式

Python-用户账户与应用程序样式

2025/4/2 3:54:52 来源:https://blog.csdn.net/2402_86373248/article/details/146769436  浏览:    关键词:Python-用户账户与应用程序样式

第十九章 用户账户与数据管理  

19.1 用户输入数据处理  

19.1.1 添加新主题  

操作步骤:  

1. 在models.py中定义Topic模型(需关联用户):  

from django.contrib.auth.models import User  class Topic(models.Model):  owner = models.ForeignKey(User, on_delete=models.CASCADE)  text = models.CharField(max_length=200)  date_added = models.DateTimeField(auto_now_add=True)  

语法说明:  

- ForeignKey建立用户与主题的一对多关系  

- on_delete=models.CASCADE表示用户删除时级联删除关联数据  

2. 在视图函数中限制访问:  

from django.contrib.auth.decorators import login_required  @login_required  def new_topic(request):  if request.method == 'POST':  form = TopicForm(request.POST)  if form.is_valid():  new_topic = form.save(commit=False)  new_topic.owner = request.user # 关联当前用户  new_topic.save()  return redirect('learning_logs:index')  else:  form = TopicForm()  return render(request, 'new_topic.html', {'form': form})  

用法解析:  

- @login_required装饰器限制未登录用户访问  

- commit=False暂不提交数据库,允许添加额外字段  

19.2 创建用户认证系统  

19.2.1 创建users应用  

执行命令:  

python manage.py startapp users  

19.2.2 配置settings.py  

在INSTALLED_APPS添加:  

'users.apps.UsersConfig'  

在文件末尾添加:  

LOGIN_URL = 'users:login' # 指定登录页面路径  

19.2.3 用户登录实现  

登录视图示例:  

from django.contrib.auth import authenticate, login  def user_login(request):  if request.method == 'POST':  username = request.POST['username']  password = request.POST['password']  user = authenticate(request, username=username, password=password)  if user is not None:  login(request, user)  return redirect('learning_logs:index')  else:  return HttpResponse('Invalid login')  return render(request, 'registration/login.html')  

核心方法说明:  

- authenticate()验证用户凭证  

- login()创建用户会话  

19.3 数据权限控制  

19.3.1 查询过滤  

在视图中限制数据访问:  

def topic(request, topic_id):  topic = Topic.objects.get(id=topic_id)  if topic.owner != request.user:  raise Http404 # 非所有者触发404错误  entries = topic.entry_set.order_by('-date_added')  return render(request, 'topic.html', {'topic':topic, 'entries':entries})  

第二十章 样式设置与部署  

20.1 使用Bootstrap美化界面  

20.1.1 安装django-bootstrap4  

执行:  

pip install django-bootstrap4  

配置settings.py:  

INSTALLED_APPS += ['bootstrap4']  

20.1.2 修改base模板  

在templates/base.html中添加:  

{% load bootstrap4 %}  <head>  {% bootstrap_css %}  {% bootstrap_javascript jquery='full' %}  </head>  <body>  <nav class="navbar navbar-expand-lg navbar-light bg-light">  <!-- 导航栏内容 -->  </nav>  <div class="container">  {% block content %}{% endblock %}  </div>  </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  

添加配置:  

import django_heroku  DEBUG = False  ALLOWED_HOSTS = ['learning-log.herokuapp.com']  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:  

import os  SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')  

20.3.2 HTTPS配置  

在settings.py中强制HTTPS:  

SECURE_SSL_REDIRECT = True  SESSION_COOKIE_SECURE = True  CSRF_COOKIE_SECURE = True  

关键流程总结:  

1. 用户系统实现流程:  

   创建应用 -> 定义模型 -> 编写认证视图 -> 配置URL -> 模板集成  

2. 部署流程:  

   安装依赖 -> 配置适配文件 -> Heroku CLI操作 -> 数据库迁移 -> 安全设置  

常见问题处理:  

- 部署后静态文件丢失:需配置whitenoise中间件  

- Heroku数据库连接失败:检查DATABASE_URL环境变量  

- 模板继承失效:确保模板目录在settings.py的TEMPLATES中正确定义

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词