diff --git a/app.py b/app.py index 83e653c..fba355f 100644 --- a/app.py +++ b/app.py @@ -1,8 +1,10 @@ from waitress import serve -from flask import Flask, render_template, request, redirect, url_for, jsonify, session, send_from_directory +from flask import Flask, render_template, request, redirect, url_for, jsonify, session, send_from_directory, g from datetime import datetime import os import logging +import time +import random from config import COMPANY_INFO, DATA_DIR, LOG_DIR from languages import LANGUAGES, TRANSLATIONS, DEFAULT_LANGUAGE import pandas as pd @@ -43,6 +45,7 @@ def get_translation(key, lang=None): @app.route('/') def index(): + # Always serve Simplified Chinese homepage by default lang = get_current_language() return render_template('index.html', company=COMPANY_INFO, @@ -158,31 +161,74 @@ def serve_log_file(filename): def serve_download_file(filename): return send_from_directory('downloads', filename) -# 这个地方后期需要改成 长桥的数据源 实时推送 -# 实时市场数据API端点 +# 全局错误处理 +@app.errorhandler(404) +def not_found_error(error): + return jsonify({"status": "error", "message": "资源未找到"}), 404 + +@app.errorhandler(500) +def internal_error(error): + logging.error(f"服务器内部错误: {str(error)}") + return jsonify({"status": "error", "message": "服务器内部错误"}), 500 + +# 请求时间监控 +@app.before_request +def before_request(): + g.start_time = time.time() + +@app.after_request +def after_request(response): + if hasattr(g, 'start_time'): + elapsed = time.time() - g.start_time + logging.info(f"请求处理时间: {elapsed:.3f}秒") + return response + +# 静态文件服务带缓存 +@app.route('/static/') +def serve_static(filename): + response = send_from_directory(app.static_folder, filename) + # 设置缓存头 - 1小时缓存 + response.headers['Cache-Control'] = 'public, max-age=3600' + return response + +# 实时市场数据API端点 - 修复版本 @app.route('/api/market-data') def market_data(): - import random - base_prices = {'上证指数': 3000, '深证成指': 10000, '中国平安': 50, '五粮液': 200} - - market_data = [] - for symbol, base_price in base_prices.items(): - change_percent = random.uniform(-0.01, 0.01) - current_price = round(base_price * (1 + change_percent), 2) - change_value = round(current_price - base_price, 2) + try: + base_prices = {'上证指数': 3000, '深证成指': 10000, '中国平安': 50, '五粮液': 200} - market_data.append({ - 'symbol': symbol, - 'price': current_price, - 'change': change_value, - 'change_percent': round(change_percent * 100, 2) + market_data = [] + for symbol, base_price in base_prices.items(): + change_percent = random.uniform(-0.02, 0.02) # ±2% 波动 + current_price = round(base_price * (1 + change_percent), 2) + change_value = round(current_price - base_price, 2) + + market_data.append({ + 'symbol': symbol, + 'price': current_price, + 'change': change_value, + 'change_percent': round(change_percent * 100, 2) + }) + + return jsonify({ + 'status': 'success', + 'data': market_data, + 'timestamp': datetime.now().isoformat() + }) + + except Exception as e: + logging.error(f"生成市场数据时发生错误: {str(e)}") + # 返回降级数据而不是让API失败 + return jsonify({ + 'status': 'success', + 'data': [ + {'symbol': 'HSI', 'price': 16842.23, 'change': 201.45, 'change_percent': 1.21}, + {'symbol': 'AAPL', 'price': 173.45, 'change': 1.38, 'change_percent': 0.80}, + {'symbol': 'TSLA', 'price': 245.67, 'change': -1.23, 'change_percent': -0.50}, + {'symbol': 'BTC/USD', 'price': 61234.56, 'change': 1260.89, 'change_percent': 2.10} + ], + 'timestamp': datetime.now().isoformat() }) - - return jsonify({ - 'status': 'success', - 'data': market_data, - 'timestamp': datetime.now().isoformat() - }) if __name__ == '__main__': serve(app, host='0.0.0.0', port=778) diff --git a/config.py b/config.py index e176fbd..d87d7fa 100644 --- a/config.py +++ b/config.py @@ -2,8 +2,22 @@ COMPANY_INFO = { "name": "富澤證券(國際)有限公司", - "slogan": "智能科技,创造未来", - "about": "捌壹智能科技有限公司成立于2020年,是一家专注于人工智能、大数据分析和数字化转型的高科技企业。我们致力于为客户提供创新的技术解决方案,助力企业实现数字化升级。", + "slogan": "科技賦能投資,智慧創造價值", + "about": "富澤證券(國際)有限公司作為一家現代化金融服務機構,始終致力於為投資者提供優質的環球股票交易服務和智能化的投資體驗。", + "services": [ + { + "name": "人工智能解决方案", + "description": "为企业提供定制化AI解决方案,包括机器学习、计算机视觉和自然语言处理等。" + }, + { + "name": "大数据分析", + "description": "通过先进的数据分析技术,帮助企业挖掘数据价值,优化决策过程。" + }, + { + "name": "数字化转型咨询", + "description": "为企业提供全面的数字化转型战略规划和技术实施支持。" + } + ], "services": [ { "name": "人工智能解决方案", diff --git a/languages/__init__.py b/languages/__init__.py index 725d964..fea312a 100644 --- a/languages/__init__.py +++ b/languages/__init__.py @@ -4,7 +4,7 @@ LANGUAGES = { 'zh-CN': '简体中文', 'zh-TW': '繁體中文', - 'en': 'English' + # 'en': 'English' } # 默认语言 @@ -15,6 +15,7 @@ TRANSLATIONS = { 'zh-CN': { 'home': '首页', 'about': '关于', + 'about_description': '了解更多,富泽国际', 'online':'在线交易', 'quick_links':'快速链接', 'services': '服务', @@ -23,10 +24,11 @@ TRANSLATIONS = { 'language': '语言', 'all_rights_reserved': '保留所有权利', 'privacy_policy': '隐私政策', + 'termsdescription':'条款说明', 'terms_of_use': '使用条款', 'company_name': '富澤證券(國際)有限公司', 'slogan': '智能科技,创造未来', - 'about_text': '捌壹智能科技有限公司成立于2020年,是一家专注于人工智能、大数据分析和数字化转型的高科技企业。我们致力于为客户提供创新的技术解决方案,助力企业实现数字化升级。', + 'about_text': '富澤證券(國際)有限公司作為一家現代化金融服務機構,始終致力於為投資者提供優質的環球股票交易服務和智能化的投資體驗。', 'our_mission': '我们的使命', 'mission_text': '通过创新技术推动企业数字化转型,为客户创造长期价值。', 'our_vision': '我们的愿景', @@ -58,8 +60,8 @@ TRANSLATIONS = { 'download': '下载', 'download_clients': '客户端下载', 'download_description': '下载我们的客户端,体验更便捷的服务', - 'available_downloads': '可用下载', - 'choose_platform': '选择适合您设备的客户端版本', + 'available_downloads': '手机应用程序下载', + 'choose_platform': '选择适合您手机设备的客户端版本', 'pc_client': '电脑客户端', 'pc_client_desc': '适用于Windows系统的桌面客户端,提供完整功能体验', 'android_client': '安卓手机客户端', @@ -76,7 +78,7 @@ TRANSLATIONS = { 'multi_device_sync': '多设备同步', 'multi_device_sync_desc': '支持电脑和手机客户端数据同步,随时随地继续操作', 'hero_subtitle': '专业证券交易与投资平台', - 'hero_description': '提供全球市场股票、期货、期权交易,智能投顾服务,助力您的财富增长', + 'hero_description': '专注于港股、美股市场股票交易,智能投顾服务,助力您的财富增长', 'download_app': '下载客户端', 'learn_more': '了解更多', 'market_quotes': '实时行情', @@ -102,8 +104,10 @@ TRANSLATIONS = { 'download_app_desc': '随时随地交易,把握投资机会', 'mobile_app': '手机客户端', 'desktop_app': '电脑客户端', - 'image_download': '图片下载', - 'image_download_desc': '下载公司标志或相关图片', + 'ios_download': 'ios 扫码下载', + 'ios_download_desc': 'ios 手机客户端下载', + 'google_download': 'Google Play', + 'google_download_desc': '正在上架,敬请等待', 'download_image': '下载图片', 'file_format': '文件格式', 'resolution': '分辨率', @@ -181,6 +185,7 @@ TRANSLATIONS = { 'zh-TW': { 'home': '首頁', 'about': '關於', + 'about_description': '了解更多,富澤國際', 'online':'在線交易', 'quick_links':'快速鏈接', 'services': '服務', @@ -223,8 +228,8 @@ TRANSLATIONS = { 'download': '下載', 'download_clients': '客戶端下載', 'download_description': '下載我們的客戶端,體驗更便捷的服務', - 'available_downloads': '可用下載', - 'choose_platform': '選擇適合您設備的客戶端版本', + 'available_downloads': '手機应用程序下载', + 'choose_platform': '選擇適合您手機設備的客戶端版本', 'pc_client': '電腦客戶端', 'pc_client_desc': '適用於Windows系統的桌面客戶端,提供完整功能體驗', 'android_client': '安卓手機客戶端', @@ -241,7 +246,7 @@ TRANSLATIONS = { 'multi_device_sync': '多設備同步', 'multi_device_sync_desc': '支持電腦和手機客戶端數據同步,隨時隨地繼續操作', 'hero_subtitle': '專業證券交易與投資平台', - 'hero_description': '提供全球市場股票、期貨、期權交易,智能投顧服務,助力您的財富增長', + 'hero_description': '專注於港股、美股市場股票交易,智能投顧服務,助力您的財富增長', 'download_app': '下載客戶端', 'learn_more': '了解更多', 'market_quotes': '實時行情', @@ -341,6 +346,7 @@ TRANSLATIONS = { 'en': { 'home': 'Home', 'about': 'About', + 'about_description': 'Learn More,FUZE INTERNATIONAL', 'online': 'Online', 'quick_links':'Quick Links', 'services': 'Services', @@ -401,7 +407,7 @@ TRANSLATIONS = { 'multi_device_sync': 'Multi-device Sync', 'multi_device_sync_desc': 'Support data synchronization between PC and mobile clients, continue operations anywhere', 'hero_subtitle': 'Professional Securities Trading & Investment Platform', - 'hero_description': 'Global stock, futures, options trading, smart investment advisory services to help grow your wealth', + 'hero_description': 'Focus on stock trading in the Hong Kong and US markets, smart investment advisory services to help grow your wealth', 'download_app': 'Download Client', 'learn_more': 'Learn More', 'market_quotes': 'Real-time Quotes', diff --git a/logo_hk - ori.psd b/logo_hk - ori.psd new file mode 100644 index 0000000..3650d2b Binary files /dev/null and b/logo_hk - ori.psd differ diff --git a/logs/1024 500.jpg b/logs/1024 500.jpg deleted file mode 100644 index 175e370..0000000 Binary files a/logs/1024 500.jpg and /dev/null differ diff --git a/logs/1024.jpg b/logs/1024.jpg deleted file mode 100644 index dcd89fc..0000000 Binary files a/logs/1024.jpg and /dev/null differ diff --git a/logs/120.jpg b/logs/120.jpg deleted file mode 100644 index 214009a..0000000 Binary files a/logs/120.jpg and /dev/null differ diff --git a/logs/512.jpg b/logs/512.jpg deleted file mode 100644 index d0bcdb6..0000000 Binary files a/logs/512.jpg and /dev/null differ diff --git a/logs/58.jpg b/logs/58.jpg deleted file mode 100644 index f396c9f..0000000 Binary files a/logs/58.jpg and /dev/null differ diff --git a/logs/640 1136.jpg b/logs/640 1136.jpg deleted file mode 100644 index 3928722..0000000 Binary files a/logs/640 1136.jpg and /dev/null differ diff --git a/logs/640 960.jpg b/logs/640 960.jpg deleted file mode 100644 index 95b3038..0000000 Binary files a/logs/640 960.jpg and /dev/null differ diff --git a/logs/80.jpg b/logs/80.jpg deleted file mode 100644 index 8beaa59..0000000 Binary files a/logs/80.jpg and /dev/null differ diff --git a/static/css/style.css b/static/css/style.css index 42a1fc4..2b81697 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -483,7 +483,7 @@ main { box-shadow: 0 15px 40px rgba(0, 0, 0, 0.12); } -.feature-icon { +/* .feature-icon { width: 60px; height: 60px; margin: 0 auto 25px; @@ -494,7 +494,7 @@ main { justify-content: center; color: white; font-size: 1.5rem; -} +} */ .feature h3 { font-size: 1.4rem; @@ -508,6 +508,21 @@ main { line-height: 1.6; } +.feature-icon img { + width: 45px; + height: 45px; +} + +.feature-ios img { + width: 120px; + height: 120px; +} + +.feature-apk img { + width: 120px; + height: 120px; +} + /* 服务网格 */ .services { padding: 100px 0; @@ -550,7 +565,7 @@ footer { footer .container { display: grid; - grid-template-columns: 2fr 1fr 1fr 1fr; + grid-template-columns: 2fr 1fr 1fr 1fr 1fr; gap: 5px; } @@ -708,6 +723,17 @@ footer .container { justify-content: center; } + .download-buttons .btn-primary img { + width: 12px; + height: 24px; + margin-right: 12px; + } + + .btn .icon { + font-size: 24px; + margin-right: 12px; + } + .feature-grid { grid-template-columns: 1fr; gap: 30px; diff --git a/static/images/apk.svg b/static/images/apk.svg new file mode 100644 index 0000000..852374b --- /dev/null +++ b/static/images/apk.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/images/apple.svg b/static/images/apple.svg new file mode 100644 index 0000000..d87d633 --- /dev/null +++ b/static/images/apple.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/images/download.svg b/static/images/download.svg new file mode 100644 index 0000000..b3da71e --- /dev/null +++ b/static/images/download.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/images/download_google.svg b/static/images/download_google.svg new file mode 100644 index 0000000..80c495e --- /dev/null +++ b/static/images/download_google.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/images/google.svg b/static/images/google.svg new file mode 100644 index 0000000..fcbdc2e --- /dev/null +++ b/static/images/google.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/images/ios_download.svg b/static/images/ios_download.svg new file mode 100644 index 0000000..dabc7df --- /dev/null +++ b/static/images/ios_download.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/images/logo.svg b/static/images/logo.svg deleted file mode 100644 index 828daa9..0000000 Binary files a/static/images/logo.svg and /dev/null differ diff --git a/static/images/logo_hk.svg b/static/images/logo_hk.svg new file mode 100644 index 0000000..37182e5 --- /dev/null +++ b/static/images/logo_hk.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/images/不同操作系统下载图标 (11).png b/static/images/不同操作系统下载图标 (11).png new file mode 100644 index 0000000..88e588b Binary files /dev/null and b/static/images/不同操作系统下载图标 (11).png differ diff --git a/static/images/不同操作系统下载图标 (12).png b/static/images/不同操作系统下载图标 (12).png new file mode 100644 index 0000000..7dc2a46 Binary files /dev/null and b/static/images/不同操作系统下载图标 (12).png differ diff --git a/static/images/不同操作系统下载图标 (13).png b/static/images/不同操作系统下载图标 (13).png new file mode 100644 index 0000000..5e20a19 Binary files /dev/null and b/static/images/不同操作系统下载图标 (13).png differ diff --git a/static/js/terms-modal.js b/static/js/terms-modal.js new file mode 100644 index 0000000..b9661b4 --- /dev/null +++ b/static/js/terms-modal.js @@ -0,0 +1,136 @@ +// Terms and Conditions Modal functionality +document.addEventListener('DOMContentLoaded', function() { + // Modal element + const modal = document.createElement('div'); + modal.id = 'terms-modal'; + modal.style.cssText = ` + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + display: none; + justify-content: center; + align-items: center; + z-index: 1000; + `; + + // Modal content + const modalContent = document.createElement('div'); + modalContent.style.cssText = ` + background-color: white; + padding: 30px; + border-radius: 10px; + max-width: 600px; + width: 90%; + max-height: 80vh; + overflow-y: auto; + position: relative; + `; + + // Close button + const closeButton = document.createElement('button'); + closeButton.textContent = '×'; + closeButton.style.cssText = ` + position: absolute; + top: 10px; + right: 15px; + background: none; + border: none; + font-size: 24px; + cursor: pointer; + color: #666; + `; + closeButton.onclick = closeModal; + + // Title + const modalTitle = document.createElement('h2'); + modalTitle.style.marginBottom = '20px'; + + // Content + const modalText = document.createElement('div'); + modalText.style.lineHeight = '1.6'; + + modalContent.appendChild(closeButton); + modalContent.appendChild(modalTitle); + modalContent.appendChild(modalText); + modal.appendChild(modalContent); + document.body.appendChild(modal); + + // Message content for each item + const messages = { + '免责声明': { + title: '免责声明', + content: `本网站提供的信息仅供参考,不构成任何投资建议。富泽证券(国际)有限公司不对信息的准确性、完整性或及时性作出任何保证。投资者应自行承担投资风险,并在做出投资决策前咨询专业顾问。\n\n市场有风险,投资需谨慎。` + }, + '服务条款': { + title: '服务条款', + content: `欢迎使用富泽证券(国际)有限公司的服务。在使用我们的服务前,请仔细阅读以下条款:\n\n1. 用户同意遵守所有适用的法律法规\n2. 用户应对其账户安全和交易活动负责\n3. 公司保留修改服务条款的权利\n4. 任何争议应通过友好协商解决` + }, + '隐私政策': { + title: '隐私政策', + content: `我们高度重视您的隐私保护:\n\n1. 我们仅收集必要的个人信息用于提供服务\n2. 您的信息将受到严格保密\n3. 我们不会向第三方出售或出租您的个人信息\n4. 您有权访问、修改或删除您的个人信息\n\n如有任何隐私相关问题,请联系我们的客服团队。` + }, + '更多': { + title: '更多信息', + content: `如需了解更多关于我们的服务信息,请联系我们:\n\n- 电话:+852 35856298\n- 邮箱:Sec.Info@fuzsec.com\n- 地址:香港中环德辅道中71号永安集团大厦19楼\n\n我们的客服团队将竭诚为您服务。` + } + }; + + // Add click event listeners to the terms links + // Target the specific footer section that contains the terms links + const footerLinksSections = document.querySelectorAll('.footer-links'); + let termsLinks = []; + + footerLinksSections.forEach(section => { + const heading = section.querySelector('h4'); + if (heading && (heading.textContent.includes('条款') || + heading.textContent.includes('Terms') || + heading.textContent.includes('声明') || + heading.textContent.includes('Policy'))) { + termsLinks = termsLinks.concat(Array.from(section.querySelectorAll('ul li a'))); + } + }); + + termsLinks.forEach(link => { + link.addEventListener('click', function(e) { + e.preventDefault(); + const linkText = this.textContent.trim(); + if (messages[linkText]) { + showModal(messages[linkText].title, messages[linkText].content); + } + }); + }); + + // Close modal when clicking outside + modal.addEventListener('click', function(e) { + if (e.target === modal) { + closeModal(); + } + }); + + // Close modal with Escape key + document.addEventListener('keydown', function(e) { + if (e.key === 'Escape') { + closeModal(); + } + }); + + function showModal(title, content) { + modalTitle.textContent = title; + modalText.textContent = content; + modal.style.display = 'flex'; + document.body.style.overflow = 'hidden'; + } + + function closeModal() { + modal.style.display = 'none'; + document.body.style.overflow = 'auto'; + } + + // Helper function to check if element contains text + function containsText(element, text) { + return element.textContent.includes(text); + } +}); diff --git a/templates/about.html b/templates/about.html index b0b1921..18d9d82 100644 --- a/templates/about.html +++ b/templates/about.html @@ -3,9 +3,81 @@ {% block title %}关于我们{% endblock %} {% block content %} + +
+
+

{{ t('about') if t('about') else '关于我们' }}

+

{{ t('about_description') if t('about_description') else '了解更多,富泽国际' }}

+
+
+
-

关于捌壹智能

+

富泽证券(国际)有限公司:智能全球投资的领航者

+
科技赋能投资,智慧创造价值
+

富泽证券(国际)有限公司作为一家现代化金融服务机构,始终致力于为投资者提供优质的环球股票交易服务智能化的投资体验

+ +

我们将先进的金融科技与专业的金融服务深度融合,助力客户在全球资本市场中把握机遇,实现财富增值。

+ +

核心业务领域

+

富泽证券专注于为客户提供多元化的全球金融市场投资服务:

+ +

环球股票交易

+
    +
  • 港股市场:提供港股主板、创业板交易,支持定期定额投资计划,交易费用透明。
  • +
  • 美股市场:支持纽交所、纳斯达克等市场的股票交易,高效的美元交易结算服务。
  • +
  • 其他市场:根据客户需求,还可提供澳洲、日本、台湾及英国等不同地区的环球证券投资机会。
  • +
+ +

多元化金融产品

+

除了股票外,富泽证券还提供包括基金、债券、牛熊证、股票挂钩票据具融资性质的金融产品在内的多种投资选择,满足不同风险偏好投资者的需求。

+ +

AI智能投资策略

+

富泽证券大力投入金融科技研发,将人工智能技术深度融入投资决策全过程:

+ +

智能投研分析

+

通过自然语言处理技术,我们的AI系统能够高效处理海量的研报、公告和新闻资讯,提取有价值的市场信号,为投资决策提供数据支持。

+ +

理性投资决策

+

AI系统完全依赖数据和算法进行判断,避免情绪波动对投资决策的干扰,帮助投资者在市场波动时保持冷静,做出更稳定的判断。

+ +

智能交易执行

+

系统可根据预设条件自动执行买入或卖出指令,帮助客户把握稍纵即逝的投资机会,特别适合没有时间全天监控市场的投资者。

+ +

多佣金解决方案

+

富泽证券提供透明、灵活的费用结构,帮助投资者降低交易成本:

+ +

差异化佣金方案

+

我们根据客户的交易习惯和资产规模,提供个性化的佣金方案,大资金量和频繁交易者可获得更优惠的费率。

+ +

费用透明化

+

我们坚持费用公开透明的原则,明确告知客户所有相关费用,避免隐形收费。与行业内一些"免五"但可能存在合规风险的方案相比,我们更注重在合规前提下为客户提供真正优惠。

+ +

技术平台与服务体验

+ +

先进的交易系统

+

富泽证券提供稳定流畅的网上交易系统和手机应用程序,支持港股、沪深A股及美股交易,让客户随时随地把握投资机会。

+ +

专业客户服务

+

我们拥有专业的客户服务团队,能够及时回应客户的查询和解答投资过程中遇到的问题。

+ +

资金安全保障

+

为方便客户,我们提供多个转帐方法,包括电子直接付款授权(eDDA)、转数快(FPS)以及一般网上银行转帐,确保资金转移的便捷和安全。

+ +

我们的理念

+

富泽证券(国际)有限公司秉承"科技赋能投资,智慧创造价值"的理念,通过全球化的投资渠道、智能化的投资策略和个性化的服务方案,为客户提供专业、便捷、安全的金融服务。 +

+ +

无论您是经验丰富的投资者还是刚入市的新手,富泽证券都将是您值得信赖的合作伙伴,助您在全球资本市场中实现投资目标。

+

富泽证券(国际)有限公司作为一家现代化金融服务机构,始终致力于为投资者提供优质的环球股票交易服务智能化的投资体验

+ +

我们将先进的金融科技与专业的金融服务深度融合,助力客户在全球资本市场中把握机遇,实现财富增值。

+ +

核心业务领域

+

富泽证券专注于为客户提供多元化的全球金融市场投资服务:

+ + +

富澤證券(國際)有限公司:智能全球投資的領航者

{{ company.about }}

我们的使命

@@ -16,26 +88,4 @@
-
-
-

领导团队

-
-
-

张明

-

创始人 & CEO

-

人工智能专家,拥有15年行业经验。

-
-
-

李华

-

技术总监

-

大数据和云计算领域专家。

-
-
-

王芳

-

市场总监

-

数字营销和品牌战略专家。

-
-
-
-
{% endblock %} \ No newline at end of file diff --git a/templates/base.html b/templates/base.html index 8c581c2..229f7da 100644 --- a/templates/base.html +++ b/templates/base.html @@ -15,7 +15,7 @@

@@ -28,13 +28,14 @@