{"id":854,"date":"2022-09-14T15:04:00","date_gmt":"2022-09-14T09:34:00","guid":{"rendered":"https:\/\/geekpython.in\/?p=854"},"modified":"2023-08-15T16:24:07","modified_gmt":"2023-08-15T10:54:07","slug":"merging-tailwindcss-into-flask-apps","status":"publish","type":"post","link":"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps","title":{"rendered":"Merging TailwindCSS into Flask apps"},"content":{"rendered":"\n<p>TailwindCSS is a utility-first CSS framework for rapidly creating custom user interfaces. The main advantage of using TailwindCSS is that it is a highly customizable, low-level CSS framework and lets the user take full control of it.<\/p>\n\n\n\n<p>It is a utility-first CSS framework which means that it provides utility classes to build custom designs without writing CSS as we do it traditionally. It puts an end to the use of weird names for CSS classes and IDs.<\/p>\n\n\n\n<p>In this article, we&#8217;ll learn how to merge the TailwindCSS into our Flask app.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"heading-building-a-flask-app\"><a href=\"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps#heading-building-a-flask-app\"><\/a>Building a flask app<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-installing-flask\"><a href=\"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps#heading-installing-flask\"><\/a>Installing Flask<\/h3>\n\n\n\n<p>Before creating a flask app, we&#8217;ll begin the installation first. Open up your terminal and run the following command.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:ps decode:true \">pip install flask<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-creating-the-flask-server\"><a href=\"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps#heading-creating-the-flask-server\"><\/a>Creating the Flask server<\/h3>\n\n\n\n<p>Next, we&#8217;ll lay the pipeline for creating the flask server. Start by creating a folder in which we&#8217;ll put our files then inside that folder create an&nbsp;<code>app.py<\/code>&nbsp;file.<\/p>\n\n\n\n<p>Then, we&#8217;ll create a subfolder called&nbsp;<code>templates<\/code>&nbsp;in which we&#8217;ll store our HTML files and then create another subfolder called&nbsp;<code>static<\/code>&nbsp;which will be holding styles, scripts, and static images for our frontend.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:python decode:true \">flask_folder\/\n\u251c\u2500\u2500 app.py\n\u251c\u2500\u2500 static\n\u2514\u2500\u2500 templates<\/pre><\/div>\n\n\n\n<p>In our&nbsp;<code>app.py<\/code>&nbsp;file we&#8217;ll add the following code to create a flask server<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:python decode:true \" title=\"app.py\">from flask import Flask, render_template\n\napp = Flask(__name__)\n\n\n@app.route(\"\/\")\ndef index():\n    return render_template(\"index.html\")\n\n\nif __name__ == '__main__':\n    app.run(debug=True)<\/pre><\/div>\n\n\n\n<p>The above code will create a simple flask server with a route that will be responsible for displaying the webpage from the&nbsp;<code>index.html<\/code>&nbsp;file which we haven&#8217;t created yet.<\/p>\n\n\n\n<p>Add a new file called&nbsp;<code>index.html<\/code>&nbsp;inside the&nbsp;<em>templates<\/em>&nbsp;subfolder.<\/p>\n\n\n\n<p>In our&nbsp;<code>index.html<\/code>&nbsp;file add the following HTML<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:xhtml decode:true \" title=\"index.html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Title&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Hi, there!!&lt;\/h1&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre><\/div>\n\n\n\n<p>Let&#8217;s start our server by running the following command in our terminal<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:ps decode:true \">python app.py<\/pre><\/div>\n\n\n\n<p>This will start our development server and we can see our webpage serving on&nbsp;<code>http:\/\/127.0.0.1:5000<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1365\" height=\"273\" src=\"https:\/\/geekpython.in\/wp-content\/uploads\/2023\/08\/1-2.png\" alt=\"Flask App Serving on localhost\" class=\"wp-image-858\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"heading-adding-tailwindcss-into-flask\"><a href=\"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps#heading-adding-tailwindcss-into-flask\"><\/a>Adding TailwindCSS into the flask<\/h1>\n\n\n\n<p>We&#8217;ll now perform the following steps to merge the CSS framework(TailwindCSS) into our flask app.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-installing-tailwindcss\"><a href=\"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps#heading-installing-tailwindcss\"><\/a>Installing TailwindCSS<\/h3>\n\n\n\n<p>We can use either&nbsp;<code>npm<\/code>&nbsp;or&nbsp;<code>yarn<\/code>&nbsp;to install the dependency in our project folder. Run the following command in the terminal for installing TailwindCSS using&nbsp;<em>npm<\/em>&nbsp;and&nbsp;<em>yarn<\/em>&nbsp;respectively.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:ps decode:true \">npm install tailwindcss<\/pre><\/div>\n\n\n\n<p>OR<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:ps decode:true \">yarn add tailwindcss<\/pre><\/div>\n\n\n\n<p>I am using npm for this tutorial.<\/p>\n\n\n\n<p>After running the command, the installation will begin and the following files will be created in the root directory.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:python decode:true \">flask_folder\/\n\u251c\u2500\u2500 node_modules\/\n\u251c\u2500\u2500 package.json\n\u2514\u2500\u2500 package-lock.json<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-creating-a-configuration-file\"><a href=\"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps#heading-creating-a-configuration-file\"><\/a>Creating a configuration file<\/h3>\n\n\n\n<p>Run the following command in the terminal to create a configuration file.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:ps decode:true \">npx tailwindcss init<\/pre><\/div>\n\n\n\n<p>The command will create a minimal&nbsp;<code>tailwind.config.js<\/code>&nbsp;file at the root of the project.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:js decode:true \" title=\"tailwind.config.js\">module.exports = {\n  content: [],\n  theme: {\n    extend: {},\n  },\n  plugins: [],\n}<\/pre><\/div>\n\n\n\n<p>We need to do some modifications to the&nbsp;<code>content<\/code>&nbsp;section of the&nbsp;<code>tailwind.config.js<\/code>&nbsp;to configure the paths to all of your HTML templates.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:js decode:true \" title=\"tailwind.config.js\">module.exports = {\n  mode: 'jit',\n  content: [\".\/templates\/**\/*.{html,htm}\"],\n  theme: {\n    extend: {},\n  },\n  plugins: [],\n}<\/pre><\/div>\n\n\n\n<p>We just added the&nbsp;<code>templates<\/code>&nbsp;folder where all the HTML files will go and used the&nbsp;<a target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Glob_(programming)\" rel=\"noreferrer noopener\"><strong>glob pattern<\/strong><\/a>&nbsp;which makes it easy to match all of the content files in the project.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use&nbsp;<code>*<\/code>&nbsp;to match anything except slashes and hidden files<\/li>\n\n\n\n<li>Use&nbsp;<code>**<\/code>&nbsp;to match zero or more directories<\/li>\n\n\n\n<li>Use comma separate values between {} to match against a list of options<\/li>\n<\/ul>\n\n\n\n<p>Additionally, we enabled the&nbsp;<code>jit<\/code>&nbsp;(just-in-time) mode since the JIT mode generates the CSS on-demand by scanning the template files.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-creating-css-files-and-adding-tailwind-directives\"><a href=\"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps#heading-creating-css-files-and-adding-tailwind-directives\"><\/a>Creating CSS files and adding tailwind directives<\/h3>\n\n\n\n<p>Inside the&nbsp;<code>static<\/code>&nbsp;folder, create two CSS folders named&nbsp;<code>src<\/code>&nbsp;and&nbsp;<code>css<\/code>&nbsp;and inside these folders add&nbsp;<code>input.css<\/code>&nbsp;and&nbsp;<code>main.css<\/code>&nbsp;files respectively.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:python decode:true \" title=\"Folder Structure\">flask_folder\/\n\u2514\u2500\u2500 static\/\n    \u251c\u2500\u2500 css\/\n    \u2502   \u2514\u2500\u2500 main.css\n    \u2514\u2500\u2500 src\/\n        \u2514\u2500\u2500 input.css<\/pre><\/div>\n\n\n\n<p>Now, add the following code inside the&nbsp;<code>src\/input.css<\/code>&nbsp;file to insert Tailwind\u2019s base, components, and utilities styles into the CSS.<\/p>\n\n\n\n<p><code>src\/input.css<\/code>&nbsp;file<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:css decode:true \" title=\"input.css\">@tailwind base;\n@tailwind components;\n@tailwind utilities;<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-starting-the-build-process\"><a href=\"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps#heading-starting-the-build-process\"><\/a>Starting the build process<\/h3>\n\n\n\n<p>To generate the CSS from the preprocessor directives, we need to run the following command in the terminal.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:ps decode:true \">npx tailwindcss -i .\/static\/src\/input.css -o .\/static\/css\/main.css --watch<\/pre><\/div>\n\n\n\n<p><strong>Note: We will have to run the above code every time we add CSS to our HTML files to see the changes. So the best practice would be to make the above command a script, that will rebuild the CSS without the need to run the CSS build process code every time.<\/strong><\/p>\n\n\n\n<p>In the&nbsp;<code>package.json<\/code>&nbsp;file add the&nbsp;<code>scripts<\/code><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:python decode:true \" title=\"package.json\">{\n  \"dependencies\": {\n    \"tailwindcss\": \"^3.1.8\"\n  },\n\n  \"scripts\": {\n    \"create-css\": \"npx tailwindcss -i .\/static\/src\/input.css -o .\/static\/css\/main.css --watch\"\n  }\n}<\/pre><\/div>\n\n\n\n<p>Now, run the script&nbsp;<code>create-css<\/code>&nbsp;in the terminal<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:ps decode:true \">npm run create-css<\/pre><\/div>\n\n\n\n<p>The above command will eliminate the need to run the CSS build process every time after changing the code inside the HTML file.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-creating-frontend-with-tailwindcss\"><a href=\"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps#heading-creating-frontend-with-tailwindcss\"><\/a>Creating frontend with TailwindCSS<\/h3>\n\n\n\n<p>Now, to test if it is working, use the utility classes of the TailwindCSS to style the templates. Head over to the&nbsp;<code>templates\/index.html<\/code>&nbsp;and edit the file.<\/p>\n\n\n\n<p>Link the&nbsp;<code>css\/main.css<\/code>&nbsp;file in the Head tag inside the&nbsp;<code>index.html<\/code>.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:xhtml decode:true \">&lt;link href=\"{{url_for('static',filename='css\/main.css')}}\" rel=\"stylesheet\"&gt;<\/pre><\/div>\n\n\n\n<p><code>templates\/index.html<\/code><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:xhtml decode:true \" title=\"index.html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\"&gt;\n    &lt;title&gt;Merge TailwindCSS into Flask app&lt;\/title&gt;\n    &lt;link href=\"{{url_for('static',filename='css\/main.css')}}\" rel=\"stylesheet\"&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n&lt;section class=\"text-gray-600 body-font\"&gt;\n  &lt;div class=\"container px-5 py-24 mx-auto\"&gt;\n    &lt;h1 class=\"text-3xl font-medium title-font text-gray-900 mb-12 text-center\"&gt;Testimonials&lt;\/h1&gt;\n    &lt;div class=\"flex flex-wrap -m-4\"&gt;\n      &lt;div class=\"p-4 md:w-1\/2 w-full\"&gt;\n        &lt;div class=\"h-full bg-gray-100 p-8 rounded\"&gt;\n          &lt;p class=\"leading-relaxed mb-6\"&gt;Synth chartreuse iPhone lomo cray raw denim brunch everyday carry neutra before they sold out fixie 90's microdosing. Tacos pinterest fanny pack venmo, post-ironic heirloom try-hard pabst authentic iceland.&lt;\/p&gt;\n          &lt;a class=\"inline-flex items-center\"&gt;\n            &lt;img alt=\"testimonial\" src=\"https:\/\/dummyimage.com\/106x106\" class=\"w-12 h-12 rounded-full flex-shrink-0 object-cover object-center\"&gt;\n            &lt;span class=\"flex-grow flex flex-col pl-4\"&gt;\n              &lt;span class=\"title-font font-medium text-gray-900\"&gt;Holden Caulfield&lt;\/span&gt;\n              &lt;span class=\"text-gray-500 text-sm\"&gt;UI DEVELOPER&lt;\/span&gt;\n            &lt;\/span&gt;\n          &lt;\/a&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n      &lt;div class=\"p-4 md:w-1\/2 w-full\"&gt;\n        &lt;div class=\"h-full bg-gray-100 p-8 rounded\"&gt;\n          &lt;p class=\"leading-relaxed mb-6\"&gt;Synth chartreuse iPhone lomo cray raw denim brunch everyday carry neutra before they sold out fixie 90's microdosing. Tacos pinterest fanny pack venmo, post-ironic heirloom try-hard pabst authentic iceland.&lt;\/p&gt;\n          &lt;a class=\"inline-flex items-center\"&gt;\n            &lt;img alt=\"testimonial\" src=\"https:\/\/dummyimage.com\/107x107\" class=\"w-12 h-12 rounded-full flex-shrink-0 object-cover object-center\"&gt;\n            &lt;span class=\"flex-grow flex flex-col pl-4\"&gt;\n              &lt;span class=\"title-font font-medium text-gray-900\"&gt;Alper Kamu&lt;\/span&gt;\n              &lt;span class=\"text-gray-500 text-sm\"&gt;DESIGNER&lt;\/span&gt;\n            &lt;\/span&gt;\n          &lt;\/a&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n&lt;\/section&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre><\/div>\n\n\n\n<p><strong>Flask app using TailwindCSS<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1328\" height=\"462\" src=\"https:\/\/geekpython.in\/wp-content\/uploads\/2023\/08\/2-3.png\" alt=\"Flask App using TailwindCSS\" class=\"wp-image-857\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"heading-conclusion\"><a href=\"https:\/\/geekpython.in\/merging-tailwindcss-into-flask-apps#heading-conclusion\"><\/a>Conclusion<\/h1>\n\n\n\n<p>Usually, developers prefer to use Bootstrap to build UI for the frontend, but in this tutorial, we integrated TailwindCSS into our flask app.<\/p>\n\n\n\n<p>We&#8217;ve covered the following steps in this tutorial<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Created a demo flask app.<\/li>\n\n\n\n<li>Installed the TailwindCSS into the project root directory and Configured it.<\/li>\n\n\n\n<li>Added tailwind directives in the CSS files.<\/li>\n\n\n\n<li>Ran the command to generate the CSS from the directives.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>That&#8217;s all for now<\/strong><\/p>\n\n\n\n<p><strong>Keep Coding\u270c\u270c<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TailwindCSS is a utility-first CSS framework for rapidly creating custom user interfaces. The main advantage of using TailwindCSS is that it is a highly customizable, low-level CSS framework and lets the user take full control of it. It is a utility-first CSS framework which means that it provides utility classes to build custom designs without [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":856,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[],"footnotes":""},"categories":[2,5],"tags":[36,12,31,49],"class_list":["post-854","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","category-flask","tag-flask","tag-python","tag-python3","tag-tailwindcss","entry","has-media"],"_links":{"self":[{"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/posts\/854","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/comments?post=854"}],"version-history":[{"count":3,"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/posts\/854\/revisions"}],"predecessor-version":[{"id":1359,"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/posts\/854\/revisions\/1359"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/media\/856"}],"wp:attachment":[{"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/media?parent=854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/categories?post=854"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geekpython.in\/wp-json\/wp\/v2\/tags?post=854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}