検索
ホームページバックエンド開発Python チュートリアルパート 8: Python Flask および MySQL Web アプリケーションを最初から開発する

このチュートリアル シリーズの前の部分では、さまざまなユーザーが作成したウィッシュをアプリケーションのダッシュボード ページに入力しました。また、ユーザーが特定のウィッシュに「いいね!」できるように、各ウィッシュに「いいね!」ボタンを付けました。

シリーズのこのパートでは、いいね/嫌いの表示を切り替え、特定のウィッシュが受け取ったいいねの合計数を表示する方法を見ていきます。

使い始める

このチュートリアルの前の部分を GitHub から複製することから始めます。

リーリー

ソース コードのクローンを作成した後、プロジェクト ディレクトリに移動し、Web サーバーを起動します。

リーリー

ブラウザで http://localhost:5002/ を指定すると、アプリケーションが実行されるはずです。

「いいね!」を追加

まず、特定の願いが叶えられた総数を表示する機能を実装します。新しいウィッシュが追加されると、tbl_likes テーブルにエントリが追加されます。したがって、MySQL ストアド プロシージャ sp_addWish を変更して、tbl_likes テーブルにエントリを追加します。

リーリー

上記のストアド プロシージャ コードに示すように、tbl_wish テーブルにウィッシュを挿入した後、最後に挿入された ID を取得し、そのデータを tbl_likes## に挿入します。 # 表面。

次に、

sp_GetAllWishes ストアド プロシージャを変更して、各ウィッシュが受け取ったいいねの数を含める必要があります。 MySQL 関数を使用してウィッシュの総数を取得します。そこで、ウィッシュ ID を取得し、いいねの合計数を返す getSum という関数を作成します。 リーリー

次に、ストアド プロシージャ

sp_GetAllWishesgetSum という名前の上記の MySQL 関数を呼び出して、各ウィッシュのいいねの合計数を取得します。 リーリー

getAllWishes Python メソッドを変更して、いいね数を含めます。 MySQL ストアド プロシージャから返された結果を反復処理する場合は、次のような like フィールドを含めます: リーリー

CreateThumb

JavaScript メソッドを変更して、いいね数を表示するために使用する追加のスコープを作成します。 リーリー そして

likeSpan

を親段落 p に追加します。これは、変更された CreateThumb JavaScript 関数です。 リーリー jQuery AJAX 呼び出し

/getAllWishes

の成功コールバックで CreateThumb JavaScript 関数を呼び出すときに、like パラメーターを含めます。 リーリー 変更を保存し、サーバーを再起動します。アプリにログインすると、各願いに対応する「いいね!」の数が表示されるはずです。

第 8 部分:从头开始开发 Python Flask 和 MySQL Web 应用程序願いが気に入ったかどうかを表示

各ウィッシュの下の「いいね!」の数を確認します。ログインしているユーザーがそのウィッシュに「いいね!」をしたかどうかは不明です。したがって、

You & 20 Others

のような正しいメッセージが表示されます。これを実現するには、sp_GetAllWishes を変更して、ログインしているユーザーが特定のウィッシュを好むかどうかを示すコードを含める必要があります。ウィッシュが気に入ったかどうかを確認するには、関数呼び出しを行います。ユーザー ID とウィッシュ ID をパラメーターとして受け取り、ウィッシュがユーザーに気に入られたかどうかを返す hasLiked という名前の関数を作成します。 リーリー ここで、sp_GetAllWishes

で上記の MySQL 関数

hasLiked を呼び出し、返されたデータセットにユーザーのいいねステータスを示す追加フィールドを返します。 リーリー app.py

を開き、MySQL ストアド プロシージャ

sp_GetAllWishes への呼び出しを変更して、ユーザー ID をパラメータとして含めます。 リーリー 次に、getAllWishes

メソッドを変更して、特定のウィッシュに対するユーザーの同様のステータスを含めます。作成された辞書に

HasLiked を含めるようにコードを変更します。 リーリー #CreateThumb JavaScript 関数で、

HasLiked

をチェックし、それに応じて HTML を追加します。 リーリー 上記のコードに示されているように、ユーザーが特定のウィッシュを気に入らない場合は、いいね数を表示します。ユーザーがこの願いを気に入った場合は、より説明的なメッセージが表示されます。

「いいね!」の数を更新する

第 8 部分:从头开始开发 Python Flask 和 MySQL Web 应用程序「いいね!」ボタンをクリックすると、データベース内の「いいね!」ステータスが更新されますが、ダッシュボードでは変更されません。そこで、

like

ボタンがクリックされたときの AJAX 呼び出しの成功コールバックでこれを更新しましょう。

我们首先对 MySQL 存储过程 sp_AddUpdateLikes 进行更改。早些时候,我们传递了喜欢的状态,1 表示喜欢,0 表示不喜欢。我们将对其进行修改并在存储过程中切换类似/不同。打开 sp_AddUpdateLikes 并将赞状态选择到变量中并检查变量状态。如果变量状态为“相似”,我们会将状态更新为“相似”,反之亦然。以下是修改后的 sp_AddUpdateLikes 存储过程。

-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_AddUpdateLikes`(
    p_wish_id int,
	p_user_id int,
	p_like int
)
BEGIN
	
	if (select exists (select 1 from tbl_likes where wish_id = p_wish_id and user_id = p_user_id)) then

		
		select wish_like into @currentVal from tbl_likes where wish_id = p_wish_id and user_id = p_user_id;
		
		if @currentVal = 0 then
			update tbl_likes set wish_like = 1 where wish_id = p_wish_id and user_id = p_user_id;
		else
			update tbl_likes set wish_like = 0 where wish_id = p_wish_id and user_id = p_user_id;
		end if;
		
	else
		
		insert into tbl_likes(
			wish_id,
			user_id,
			wish_like
		)
		values(
			p_wish_id,
			p_user_id,
			p_like
		);


	end if;
END

CreateThumb JavaScript函数中,为我们之前创建的likeSpan分配一个ID,这样我们就可以根据需要更新状态.

var likeSpan = $('<span>').attr({'aria-hidden':'true','id':'span_'+id});

打开 app.py。在 addUpdateLike 方法中,一旦数据更新成功,我们将使用另一个存储过程调用来获取愿望之类的计数和状态。因此,创建一个名为 sp_getLikeStatus 的 MySQL 存储过程。在 sp_getLikeStatus 中,我们将调用已创建的 MySQL 函数 getSumhasLiked 来获取状态。

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_getLikeStatus`(
    IN p_wish_id int,
	IN p_user_id int
)
BEGIN
	select getSum(p_wish_id),hasLiked(p_wish_id,p_user_id);
END$$
DELIMITER ;

从 Python 方法 addUpdateLike 调用 sp_AddUpdateLikes 后,关闭光标和连接。

if len(data) is 0:
    conn.commit()
    cursor.close()
    conn.close()

现在调用存储过程 sp_getLikeStatus

conn = mysql.connect()
cursor = conn.cursor()
cursor.callproc('sp_getLikeStatus',(_wishId,_user))
result = cursor.fetchall()

随响应一起返回点赞计数和点赞状态。

return json.dumps({'status':'OK','total':result[0][0],'likeStatus':result[0][1]})

dashboard.html中,在对addUpdateLike方法进行AJAX调用的成功回调中,解析返回的响应并根据点赞状态显示点赞计数.

success: function(response) {

    var obj = JSON.parse(response);

    if (obj.likeStatus == "1") {
        $('#span_' + spId).html(' You & ' + (Number(obj.total) - 1) + ' Others');
    } else {
        $('#span_' + spId).html(' ' + obj.total + ' like(s)');
    }
  
}

保存更改,重新启动服务器,然后使用有效凭据登录。进入仪表板页面后,尝试点赞某个特定愿望,然后查看点赞状态如何相应更新。

总结

在本系列的这一部分中,我们为仪表板页面中显示的愿望实现了类似/不同的功能。在本系列的后续部分中,我们将在应用程序中实现更多新功能并完善一些现有功能。

请在下面的评论中告诉我们您的想法和建议或任何更正。本教程的源代码可在 GitHub 上获取。

以上がパート 8: Python Flask および MySQL Web アプリケーションを最初から開発するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Pythonの主な目的:柔軟性と使いやすさPythonの主な目的:柔軟性と使いやすさApr 17, 2025 am 12:14 AM

Pythonの柔軟性は、マルチパラダイムサポートと動的タイプシステムに反映されていますが、使いやすさはシンプルな構文とリッチ標準ライブラリに由来しています。 1。柔軟性:オブジェクト指向、機能的および手続き的プログラミングをサポートし、動的タイプシステムは開発効率を向上させます。 2。使いやすさ:文法は自然言語に近く、標準的なライブラリは幅広い機能をカバーし、開発プロセスを簡素化します。

Python:汎用性の高いプログラミングの力Python:汎用性の高いプログラミングの力Apr 17, 2025 am 12:09 AM

Pythonは、初心者から上級開発者までのすべてのニーズに適した、そのシンプルさとパワーに非常に好まれています。その汎用性は、次のことに反映されています。1)学習と使用が簡単、シンプルな構文。 2)Numpy、Pandasなどの豊富なライブラリとフレームワーク。 3)さまざまなオペレーティングシステムで実行できるクロスプラットフォームサポート。 4)作業効率を向上させるためのスクリプトおよび自動化タスクに適しています。

1日2時間でPythonを学ぶ:実用的なガイド1日2時間でPythonを学ぶ:実用的なガイドApr 17, 2025 am 12:05 AM

はい、1日2時間でPythonを学びます。 1.合理的な学習計画を作成します。2。適切な学習リソースを選択します。3。実践を通じて学んだ知識を統合します。これらの手順は、短時間でPythonをマスターするのに役立ちます。

Python vs. C:開発者の長所と短所Python vs. C:開発者の長所と短所Apr 17, 2025 am 12:04 AM

Pythonは迅速な開発とデータ処理に適していますが、Cは高性能および基礎となる制御に適しています。 1)Pythonは、簡潔な構文を備えた使いやすく、データサイエンスやWeb開発に適しています。 2)Cは高性能で正確な制御を持ち、ゲームやシステムのプログラミングでよく使用されます。

Python:時間のコミットメントと学習ペースPython:時間のコミットメントと学習ペースApr 17, 2025 am 12:03 AM

Pythonを学ぶのに必要な時間は、人によって異なり、主に以前のプログラミングの経験、学習の動機付け、学習リソースと方法、学習リズムの影響を受けます。現実的な学習目標を設定し、実用的なプロジェクトを通じて最善を尽くします。

Python:自動化、スクリプト、およびタスク管理Python:自動化、スクリプト、およびタスク管理Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

Pythonと時間:勉強時間を最大限に活用するPythonと時間:勉強時間を最大限に活用するApr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境