목차
시작하기
좋아요 추가
总结
백엔드 개발 파이썬 튜토리얼 8부: 처음부터 Python Flask 및 MySQL 웹 애플리케이션 개발

8부: 처음부터 Python Flask 및 MySQL 웹 애플리케이션 개발

Aug 31, 2023 am 08:45 AM

이 튜토리얼 시리즈의 이전 부분에서는 다양한 사용자가 만든 소원으로 애플리케이션의 대시보드 페이지를 채웠습니다. 또한 사용자가 특정 희망사항에 '좋아요'를 표시할 수 있도록 각 희망사항에 '좋아요' 버튼을 첨부했습니다.

이 시리즈에서는 좋아요/싫어요 표시를 전환하는 방법과 특정 소원이 받은 총 좋아요 수를 표시하는 방법을 알아봅니다.

시작하기

GitHub에서 이 튜토리얼의 이전 부분을 복제하는 것부터 시작하겠습니다.

으아아아

소스 코드를 복제한 후 프로젝트 디렉터리로 이동하여 웹 서버를 시작합니다.

으아아아

브라우저에서 http://localhost:5002/를 가리키면 애플리케이션이 실행되어야 합니다.

좋아요 추가

먼저 획득한 특정 소원의 총 횟수를 표시하는 기능을 구현하겠습니다. 새로운 소원이 추가되면 tbl_likes 表中添加一个条目。因此,修改 MySQL 存储过程 sp_addWish 以将条目添加到 tbl_likes 테이블에 표시됩니다.

으아아아

위의 저장프로시저 코드와 같이 tbl_wish 表后,我们获取了最后插入的 ID 并将数据插入到 tbl_likes테이블에 소원을 입력합니다.

다음으로 sp_GetAllWishes 存储过程以包含每个愿望获得的点赞数。我们将使用 MySQL 函数来获取愿望总数。因此,创建一个名为 getSum 的函数,它将获取愿望 ID를 수정하고 총 좋아요 수를 반환해야 합니다.

으아아아

이제 저장 프로시저에서 MySQL 기능을 사용하여 sp_GetAllWishes 中调用上面名为 getSum 각 소원에 대한 총 좋아요 수를 가져옵니다.

으아아아

수정 getAllWishes Python 메소드를 유사 개수를 포함하도록 수정합니다. MySQL 저장 프로시저에서 반환된 결과를 반복할 때 다음과 같은 like 필드를 포함하세요.

으아아아

좋아요 개수를 표시하는 데 사용할 추가 범위를 생성하려면 CreateThumb JavaScript 메서드를 수정하세요.

으아아아

그리고 상위 단락 plikeSpan을 추가하세요. 이것은 수정된 likeSpan 附加到父段落 p。这是修改后的 CreateThumb JavaScript 함수입니다.

으아아아

jQuery AJAX 호출 /getAllWishes의 성공 콜백에서 /getAllWishes 的成功回调中调用 CreateThumb JavaScript 函数时,包含 like JavaScript 함수를 호출할 때

매개변수를 포함하세요.

으아아아

변경 사항을 저장하고 서버를 다시 시작하세요. 앱에 로그인하면 각 희망사항에 해당하는 좋아요 수를 확인할 수 있습니다.

第 8 部分:从头开始开发 Python Flask 和 MySQL Web 应用程序

소원에 좋아요 표시

You & 20 Others。为了实现这一点,我们需要修改 sp_GetAllWishes 以包含一些代码,指示登录用户是否喜欢某个特定愿望。为了检查一个愿望是否被喜欢,我们进行一个函数调用。创建一个名为 hasLiked 的函数,该函数接受用户 ID 和愿望 ID각 소원 아래의 좋아요 수를 확인하세요. 로그인한 사용자가 소원을 좋아했는지 여부는 확실하지 않습니다. 따라서

와 같은 올바른 메시지를 매개변수로 표시하고 사용자가 해당 소원을 좋아했는지 여부를 반환합니다.

으아아아 sp_GetAllWishes 中调用上述 MySQL 函数 hasLiked이제

에서는 반환된 데이터세트에 사용자가 선호하는 상태를 나타내는 추가 필드를 반환합니다.

으아아아 app.py 并修改对 MySQL 存储过程 sp_GetAllWishes 的调用,以包含用户 IDOpen

을 매개변수로 사용하세요.

으아아아 getAllWishes 方法以包含用户对特定愿望的类似状态。修改代码以在创建的字典中包含 HasLiked 이제

메소드가 특정 희망사항에 대한 사용자의 유사한 상태를 포함하도록 수정되었습니다. 생성한 사전에 HasLiked를 포함하도록 코드를 수정하세요.

으아아아 CreateThumb JavaScript 函数中,我们将检查 HasLiked

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 웹 애플리케이션 개발의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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 Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Apr 01, 2025 pm 05:09 PM

Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? 한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? Apr 01, 2025 pm 11:15 PM

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? 인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? Mar 21, 2025 pm 06:46 PM

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.

Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Apr 01, 2025 pm 10:51 PM

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? 문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? Apr 01, 2025 pm 11:18 PM

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? 10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

정규 표현이란 무엇입니까? 정규 표현이란 무엇입니까? Mar 20, 2025 pm 06:25 PM

정규 표현식은 프로그래밍의 패턴 일치 및 텍스트 조작을위한 강력한 도구이며 다양한 응용 프로그램에서 텍스트 처리의 효율성을 높입니다.

See all articles