Web Front-end
HTML Tutorial
How to make specific fields in Django forms hidden by default and only displayed when conditions are met
How to make specific fields in Django forms hidden by default and only displayed when conditions are met

This article describes how to use JavaScript to automatically execute search logic when the page is loaded, ensuring that the `quote-text` form is hidden by default and only displayed when there is no matching entity name in the database, solving the problem of inconsistency between the initial state and the interactive state.
To achieve "only the entity-name input box is displayed when the page is loaded, and the quote-form is hidden by default", the key is to not only respond to user input (onkeyup), but also perform an initialization check immediately after the DOM is fully ready . In the current code, searchEntities() is only triggered by user input, so when the page is first loaded, #quote-form still maintains the original display state in HTML (default is block), which does not meet expectations.
✅ Correct approach: Automatically trigger a search after the page is loaded
Just add a window.onload or the more modern DOMContentLoaded event listener at the end of the script and make sure the DOM is loaded before calling searchEntities():
<script>
function searchEntities() {
const entityName = document.querySelector('#entity-name').value.trim();
const quoteForm = document.querySelector('#quote-form');
const searchResults = document.querySelector('#search_results');
// Clear the last results searchResults.innerHTML = '';
// If the input is empty, you can choose to hide the form or keep the default behavior (adjust as needed)
if (!entityName) {
quoteForm.style.display = 'none';
return;
}
fetch(`/search-entities/?entity_name=${encodeURIComponent(entityName)}`)
.then(response => {
if (!response.ok) throw new Error('Network response was not ok');
return response.json();
})
.then(entities => {
if (Array.isArray(entities) && entities.length === 0) {
// No match in database → Display quote form quoteForm.style.display = 'block';
} else {
// There is a match → Hide the quote form and display the result quoteForm.style.display = 'none';
entities.forEach(entity => {
const p = document.createElement('p');
p.textContent = entity.name; // Using textContent is safer searchResults.appendChild(p);
});
}
})
.catch(error => {
console.error('Search failed:', error);
quoteForm.style.display = 'none'; // Hide conservatively when errors occur});
}
// ✅ Execute a search immediately after the page is loaded (initialization state)
document.addEventListener('DOMContentLoaded', () => {
searchEntities();
});
</script>
? Precautions and optimization suggestions
- Prevent XSS : Use textContent instead of innerHTML to render entity names to avoid potential script injection.
- URL encoding : Use encodeURIComponent() on entityName to ensure that special characters (such as spaces, &) are passed correctly.
- Null value processing : Add .trim() and null value judgment to avoid accidentally triggering search when the user does not input.
- Error tolerance : Add fetch error handling to prevent API exceptions from causing logic interruption.
- Performance considerations : If you need anti-shake (to avoid frequent requests), you can add the setTimeout clearTimeout mechanism in onkeyup, but no anti-shake is required for the initialization call.
In this way, when the page is first loaded, it will automatically determine whether to display the quote-form based on the current value of entity-name (usually empty), and subsequent user input will be responded to in real time, truly realizing "what you see is what you get" form status control.
The above is the detailed content of How to make specific fields in Django forms hidden by default and only displayed when conditions are met. For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undress AI Tool
Undress images for free
AI Clothes Remover
Online AI tool for removing clothes from photos.
Undresser.AI Undress
AI-powered app for creating realistic nude photos
ArtGPT
AI image generator for creative art from text prompts.
Stock Market GPT
AI powered investment research for smarter decisions
Hot Article
Popular tool
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
Hot Topics
20529
7
13639
4
Chart.js complete implementation solution for dynamically switching chart types (line chart, bar chart, pie chart)
Mar 12, 2026 pm 08:51 PM
This article explains in detail how to safely and reliably dynamically switch chart types (line/bar/pie) in Chart.js, and solve the problem of Cannot read properties of undefined errors caused by mismatched data structures and rendering exceptions after type switching. The core lies in destroying old instances, deep copying configurations, and accurately rebuilding data structures by type.
How to dynamically pass HTML form data to analytics.track() method
Mar 13, 2026 pm 10:57 PM
This article explains in detail how to safely and efficiently extract user input from HTML forms and structure it into JavaScript objects as attribute parameters of analytics.track() to avoid hard coding and syntax errors and support flexible expansion.
A complete guide to using the keyboard to control the smooth movement of HTML elements
Mar 13, 2026 pm 10:18 PM
This article explains in detail why transform: translate() combined with the keydown event cannot move elements, and provides a reliable solution based on CSS positioning and JavaScript, covering absolute positioning settings, coordinate update logic, code robustness optimization, and common pitfalls.
How to optimize Lighthouse image scoring while maintaining high image quality
Mar 11, 2026 pm 09:39 PM
This article explores why providing 2x images to high DPR devices may lower Lighthouse performance scores, and provides practical solutions to balance visual quality and real performance: including proper srcset configuration, image compression strategies, modern format selection, and load priority control.
How to properly override default styles and implement custom CSS layouts in Divi theme builder
Mar 14, 2026 am 12:00 AM
This article explains in detail the root cause of style failure when applying custom CSS in the WordPress Divi theme builder. It provides practical solutions for improving selector specificity, accurately positioning elements, and rational use of !important, as well as debugging tips and code optimization examples.
How to add prompt copy for disabled button click
Mar 30, 2026 pm 04:30 PM
This article introduces a complete solution for disabling the "Next" button when the form does not meet the conditions, and using native HTML5 form validation or JavaScript dynamic control to display a friendly prompt message when the disabled button is clicked.
How to switch images by clicking a button (elegant implementation based on jQuery)
Apr 04, 2026 pm 08:06 PM
This article introduces how to use jQuery to dynamically switch background images after button clicks, and corrects problems such as CSS selector misuse, inline event coupling, and logical redundancy in the original code, providing a concise and maintainable interaction solution.
How to use Python to quickly set up a local development server for mobile responsive testing
Apr 05, 2026 pm 08:06 PM
This article introduces how to use Python's built-in module to quickly start a lightweight HTTP server. You can access local projects in a mobile browser through the LAN without deployment, and realize real-time real-machine debugging of responsive designs.





