当前位置: 首页 > 编程日记 > 正文

完成个人中心—导航标签


    1. 个人中心—视图函数带标签页面参数tag
      @app.route('/usercenter/<user_id>/<tag>')
      def usercenter(user_id, tag):
         if tag == ‘1':
             return render_template('usercenter1.html', **context)

    2. 个人中心—导航标签链接增加tag参数
      <li role=“presentation”><a href=“{{ url_for(‘usercenter’,user_id = user.id,tag = ‘1’) }}">全部问答</a></li>

    3. 个人中心—有链接到个人中心页面的url增加tag参数
       <a href="{{ url_for('usercenter',user_id = session.get('userid'), tag=1) }}">{{ session.get('user') }}</a>
from flask import Flask,render_template,request,redirect,url_for,session
from flask_sqlalchemy import SQLAlchemy
import config
from functools import wraps
from  datetime import datetimeapp = Flask(__name__)
app.config.from_object(config)
db=SQLAlchemy(app)class User(db.Model):__table__name = 'user'id = db.Column(db.Integer,primary_key=True,autoincrement=True)username = db.Column(db.String(20),nullable=False)password = db.Column(db.String(20),nullable=False)nickname = db.Column(db.String(50))class Question(db.Model):__tablename__ = 'question'id = db.Column(db.Integer, primary_key=True, autoincrement=True)title = db.Column(db.String(100), nullable=False)detail = db.Column(db.Text, nullable=False)creat_time = db.Column(db.DateTime, default=datetime.now)author_id = db.Column(db.Integer, db.ForeignKey('user.id'))author = db.relationship('User', backref=db.backref('question'))class Comment(db.Model):__tablename__='comment'id=db.Column(db.Integer, primary_key=True, autoincrement=True)author_id = db.Column(db.Integer,db.ForeignKey('user.id'))question_id = db.Column(db.Integer,db.ForeignKey('question.id'))creat_time = db.Column(db.DateTime, default=datetime.now)detail=db.Column(db.Text,nullable=False)question=db.relationship('Question',backref=db.backref('comments',order_by=creat_time.deac))author=db.relationship('User',backref=db.backref('comments'))#db.create_all()
@app.route('/')
def base():return render_template('base.html')@app.route('/index/')
def index():context = {'question':Question.query.all()}return render_template('index.html',**context)@app.route('/detail/<question_id>')
def detail(question_id):quest = Question.query.filter(Question.id == question_id).first()return render_template('detail.html',ques = quest)@app.route('/comment/',methods=['POST'])
def comment():comment = request.form.get('new_comment')ques_id = request.form.get('question_id')auth_id = User.query.filter(User.username == session.get('user')).first().idcomm = Comment(author_id=auth_id,question_id=ques_id,detail=comment)db.session.add(comm)db.session.commit()return redirect(url_for('detail',question_id=ques_id))@app.route('/usercenter/<user_id>/<tag>')def usercenter(user_id,tag):user = User.query.filter(User.id == user_id).first()context = {'user':user}if tag == '1':return  render_template('user1.html',**context)elif tag == '2':return  render_template('user2.html',**context)else:return  render_template('user3.html',**context)@app.route('/regist/',methods=['GET','POST'])
def regist():if request.method=='GET':return render_template('regist.html')else:username=request.form.get('username')password=request.form.get('password')nickname=request.form.get('nickname')user=User.query.filter(User.username==username).first()if user:return u'username existed'else:user=User (username=username,password=password,nickname=nickname)db.session.add(user)db.session.commit()return redirect(url_for('login'))@app.route('/login/',methods=['GET','POST'])
def login():if request.method=='GET':return render_template('login.html')else:username=request.form.get('username')password=request.form.get('password')user = User.query.filter(User.username == username,User.password==password).first()if user:session['user']=usernamesession['userid'] = user.idsession.permanent = Truereturn redirect(url_for('index'))else:return u'error username or password'@app.route('/logout/')
def logout():session.clear()return redirect(url_for('index'))def loginFirst(func):#定义需要登录装饰器
    @wraps(func)def wrapper(*args, ** kwargs):if session.get('user'):return func(*args, ** kwargs)else:return redirect(url_for('login'))return  wrapper@app.route('/question/',methods=['GET','POST'])
@loginFirst #需要登录装饰器
def question():if request.method=='GET':return render_template('question.html')else:title = request.form.get('title')detail = request.form.get('detail')author_id = User.query.filter(User.username == session.get('user')).first().idquestion = Question(title=title, detail=detail, author_id=author_id)db.session.add(question)db.session.commit()return redirect(url_for('index'))@app.context_processor
def mycontext():usern=session.get('user')if usern:return{'username':usern}else:return{}if __name__ == '__main__':app.run(debug=True)
{% extends 'base.html' %}
{% block title %}个人中心{% endblock %}{% block head %}<style>.nav_ul li{list-style: none;float:left;margin:10px;}</style>
{% endblock %}{% block main %}<ul class="nav nav_tabs"><li role="presentation"><a href="{{ url_for('usercenter',user_id=user.id,tag='1') }}">全部问答</a></li><li role="presentation"><a href="{{ url_for('usercenter',user_id=user.id,tag='2') }}">全部评论</a></li><li role="presentation"><a href="{{ url_for('usercenter',user_id=user.id,tag='3') }}">个人信息</a></li></ul>
{% endblock %}
<a href="{{ url_for('usercenter',user_id = session.get('user_id'),tag=3) }}" style="margin-right: -10px">{{session.get('user')}}</a>
<a href="{{ url_for('usercenter',user_id=foo.author_id,tag=3) }}" style="float: left;margin:3px auto; line-height:12px;">{{ foo.author.username }}</a>
<a href="{{url_for('usercenter',user_id=ques.author_id,tag=3)}}" class="name">{{ foo.author.username }}</a>

转载于:https://www.cnblogs.com/acef/p/8066555.html

相关文章:

PowerShell 2.0 实践(十二)管理 SQL Server 2008 R2(1)

DBA可以使用的工具很多&#xff0c;对于SQL Server来说&#xff0c;有查询分析器、事件探查器、命令行工具等&#xff0c;其中SQL语句是重中之重&#xff0c;但是PowerShell的出现使得DBA又多了一种选择。 测试脚本下载 本系列所有测试脚本均在Windows Server 2008 R2 DataCent…

Vue.js 学习路线

目录 1、Vue环境搭建 2、绑定数据 绑定对象 循环数组渲染数据 3、Vue 及双向数据绑定 Vue事件介绍 以及Vue中的ref获取dom节点 4、Vue事件 定义方法 执行方法 获取数据 改变数据 执行方法传值 以及事件对象 5、 Vue中创建单文件组件 注册组件 以及组件的使用 6、Vue中组…

企业信息化所面临的问题

企业信息化建设企业信息化所面临的问题 wxwinter 摘要 企业信息化所面临的问题以及对解决这问题的探讨目录 1 企业信息化建设走到今天所面临的问题 1 1.1 一、没有意识到信息化与工业化是一个不可分割的整体 1 1.2 二、系统零散,产生了信息孤岛 1 1.3 三…

windows 10 下部署WCF 一些细节

总体上在IIS中部署一个WCF服务和Win7没有什么区别 但是&#xff0c;如果你使用的是.NET 4.5开发的 WCF服务&#xff0c;而windows10 又安装了.net 4.7 那么你需要注意下面问题 转载于:https://www.cnblogs.com/songr/p/10806615.html

30岁前挣够500万

教你30岁前挣够500万&#xff01;&#xff08;不妨看完&#xff0c;心态会改变。&#xff09; 成功源于自信&#xff01;相信自己。下边每个字都是价值不菲&#xff0c;你认真看了吗&#xff1f;一艘没有航行目标的船&#xff0c;任何方向的风都是逆风1、你为什么是穷人&#x…

查看微码的两种方式hmcaix

转载于:https://www.cnblogs.com/jonathanyue/p/9301212.html

根据传入坐标和图片URL地址对图片进行切图操作、将图片转化成Base64位码

目录 1、根据传入坐标和图片URL地址对图片进行切图操作 2、将图片转化成Base64位编码、根据传入坐标 算出切点坐标 在开发过程的学习记录&#xff0c;此两个工具类主要是对图像的处理&#xff08;切图&#xff09;&#xff0c;对文件的想换转化&#xff0c;将文件转化成字节数…

SQL语句 goto

代码 /*********************求1234......................100的和*******************************/declaresumsmallint,ismallintseti1setsum0label: if(i<100) beginsetsumsumisetii1gotolabel endprintsum 都说不要用goto,可我看了一些经典sql 代码,…

zookeeper 和 dubbo 配置

转载于:https://www.cnblogs.com/tian1993/p/10807996.html

学习总结--团队项目

《一》团队项目 小组成员思维活跃&#xff0c;仅仅在一节课的时间里提出了n个颠覆软件开发界的思维的idea&#xff0c;最后在层层pk最后留下了八个惊世骇俗的想法。其中包括了要重振中国游戏界&#xff0c;打破王者农药的垄断地位要重写的贪吃蛇小游戏和2D游戏&#xff1b;还有…

markdown自动生成侧边栏TOC /目录

markdown自动生成侧边栏TOC /目录 模板地址 &#xff1a; https://github.com/huyande/MarkdownTemplate.git

[英文面試]如何寫面試後的感謝信

Dear Mr. X:尊敬的X先生&#xff1a; Thank you very much for the interview yesterday. I learned a great deal about your company, its major projects, and its ambitious plans for future development in Guangzhou. 非常感謝您昨天的面試。我了解到許多有關貴公司的情…

【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)

震惊&#xff01;世上最接地气的字符串浅谈(HASHKMP) 笔者过于垃圾&#xff0c;肯定会有些错的地方&#xff0c;欢迎各位巨佬指正&#xff0c;感激不尽&#xff01; 引用&#xff1a;LYD的蓝书&#xff0c;一本通&#xff0c;DFC的讲稿&#xff0c;网上各路巨佬 Luguo id: 章鱼…

SQL Server2008及以上 表分区操作详解

SQL Server 表分区之水平表分区 转自&#xff1a;https://www.cnblogs.com/Brambling/p/6766482.html什么是表分区&#xff1f; 表分区分为水平表分区和垂直表分区&#xff0c;水平表分区就是将一个具有大量数据的表&#xff0c;进行拆分为具有相同表结构的若干个表&#xff1b…

浅谈New关键字

new关键字在我们的程序中可谓是无时不刻在用到&#xff0c;那么new关键字都可以用在哪些地方呢&#xff1f;考虑以下几个问题&#xff1a; 1、new一个class对象和new一个struct或者new一个enum有什么不同&#xff1f; 答&#xff1a;new一个class时&#xff0c;new完成2个内容&…

SpringBoot 框架中 使用Spring Aop 、创建注解、创建枚举类 使用过程记录

1、开始 在Springboot框架中引入AOP <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 2、创建注解 因需要在方法层面上进行控制 所以使用注解 import java.…

Linux下屏蔽Ctrl+Alt+Delete

1、Redhat 5.X/CentOS5.X--------------------------------------使用Root账户登陆系统&#xff0c;修改/etc/inittab# Trap CTRL-ALT-DELETEca::ctrlaltdel:/sbin/shutdown -t3 -r now这句前面加“#”注销掉 就可以了&#xff01;--------------------------------------2、Fe…

Python网络爬虫--urllib

本篇随便记录学习崔庆才老师编著的《Python3 网络爬虫开发实战》以及urllib标准库使用 urllib库是Python内置的HTTP请求库&#xff0c;包含四个模块&#xff1a; request&#xff1a;最基本的HTTP请求模块&#xff0c;可以用来模拟发送请求。error&#xff1a;异常处理模块&…

Python基础三--字典,集合,编码,深浅copy,元祖、文件操作

字典 dict数据类型划分&#xff1a;可变数据类型&#xff0c;不可变数据类型不可变数据类型&#xff1a; 元组&#xff0c;bool值&#xff0c;int&#xff0c;str 可哈希可变数据类型&#xff1a; list&#xff0c;dict&#xff0c;set 不可哈希dict key…

springboot +security +mybatis+thymeleaf 实现简单的用户 角色 权限(资源) 管理

1、用户 角色 资源的关系 2、实现思路 3、参考资料 Spring Boot Security Redis 实现简单权限控制 将返回结果变成json 响应改客户端 在第六项 4、实现代码 https://github.com/huyande/springsecurity.git 5、其他问题记录 在使用springboot 2.1.X 版本 &#xff0…

在JS中最常看到切最容易迷惑的语法(转)

发现一篇JS中比较容易迷惑的语法的解释,挺有用的,转载下,与大家分享: js中大括号有四种语义作用语义1&#xff0c;组织复合语句,这是最常见的 Js代码 if( condition ) { //... }else { //... } for() { //... } if( condition ) {//... }else {//... } f…

三、类型设计规范

一、类型的逻辑分组从CLR的角度来看&#xff0c;只有两种类型&#xff1a;引用类型和值类型。但从框架设计来说&#xff0c;可以进行更细致的分类 1、引用类型&#xff0c;包括&#xff1a;类、静态类、集合、数组、异常、属性2、值类型&#xff0c;包括&#xff1a;枚举和结构…

使用mybatis一次性添加多条数据 在oracle 数据库上

1、sql 语句 #sql 语句 insert into STD_XXXX &#xff08;表名&#xff09; (ID,NAME,CLASSNAME ) select STD_XXX_SEQUENCE.Nextval,&#xff08;自增序列名称&#xff09; XXX.* from (select 1,3 from dual unionselect 2,3 from dual)XXX 2、mybatis #多条插入 &…

使用SharpPCap在C#下进行网络抓包

转自http://www.cnblogs.com/billmo/archive/2008/11/09/1329972.html 在做大学最后的毕业设计了,无线局域网络远程安全监控策略那么抓包是这个系统设计的基础以前一直都是知道用winpcap的,现在网上搜了一下,有用C#封装好了的,很好用下面是其中的几个用法这个类库作者的主页:ht…

Spring Security的RBAC数据模型嵌入

1.简介 ​ 基于角色的权限访问控制&#xff08;Role-Based Access Control&#xff09;作为传统访问控制&#xff08;自主访问&#xff0c;强制访问&#xff09;的有前景的代替受到广泛的关注。在RBAC中&#xff0c;权限与角色相关联&#xff0c;用户通过成为适当角色的成员而得…

实用Jquery开发自己的插件

实用Jquery开发自己的插件 jQuery.fn.extend(object); jQuery.extend(object); jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法。 jQuery.fn.extend(object);给jQuery对象添加方法。 fn 是什么东西呢。查看jQuery代码&#xff0c;就不难发现。 jQuery.fn jQuery…

无线网中的一些技术名词和解释

现在大家到处都可以听到在说WLAN&#xff0c;到底 个WLAN是什么意思呢&#xff1f;WLAN&#xff1a;Wireless Local Area Network的缩写&#xff0c;也是无线局域网的意思。AP&#xff1a;Access Point,无线接入器&#xff0c;常常缩写为AP。SSID&#xff1a;也缩写国ESSID&…

说到心里的哲理个性签名 学生时代的恋爱无非就是陪伴二字

学生时代的恋爱无非就是陪伴二字 也许因为得不到所以空想总是美好 . 让一个男人哭了 没错你赢了 但是你玩大了 曾经我们都那样嚣张后来怎么也学会了退让. 爱一个人成为习惯就会失去放手的勇敢. 有时沉默并不是因为词穷而是因为心空. 前任也曾是对的人 别打听我我没故事可说. 你…

切换用户启动程序

#!/bin/bash su - elasticsearch <<EOF /opt/elasticsearch-6.6.2/bin/elasticsearch -d exit EOF转载于:https://www.cnblogs.com/divl/p/10826803.html

即将到来的日子 ,你会寂寞吗?

见到如此的数字&#xff0c;不知道身边的你是否会想起一些往事&#xff0c;我想这一刻很难去形容&#xff0c;因为哥也会有寂寞的一天。 从来不太喜欢的节日&#xff0c;但是每逢到来的时候&#xff0c;总会有一阵阵的痛。今天不是好的节日&#xff0c;在地球上某一个角落&…